前端
分机 JS 4.2
Ext.data.writer.Writer 的配置,writeAllFields 设置为 false 时只发送被修改的字段。 http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.data.writer.Writer-cfg-writeAllFields
后端
Zend 框架 2.2
class SomeForm extends Zend\Form\Form {
public function __construct($name = null, $options = array()) {
parent::__construct($name, $options);
$this->add(array(
'name' => 'id',
'type' => 'Zend\Form\Element\Hidden',
));
$this->add(array(
'name' => 'field_foo',
'type' => 'Zend\Form\Element\Text',
));
$this->add(array(
'name' => 'field_bar',
'type' => 'Zend\Form\Element\Text',
));
}
}
class SomeFormFilter extends Zend\InputFilter\InputFilter {
public function __construct() {
$this->add(array(
'name' => 'id',
'required' => false
));
$this->add(array(
'name' => 'field_foo',
'required' => true
));
$this->add(array(
'name' => 'field_bar',
'required' => true
));
}
}
在服务层我们检查发送的数据是否有效
http://framework.zend.com/apidoc/2.2/classes/Zend.Form.Form.html#isValid
$form->isValid()
当后端收到
修改所有字段:请求方法:PUT 表单数据:{"field_foo":"value string","field_bar":"value string", "id":"22"} 没错。field_foo 和 field_bar 都是必填项,返回 true。
仅修改,field_foo:请求方法:PUT 表单数据:{"field_foo":"value string","id":"22"} isValid() 返回 false,因为 field_bar 是必需的。
解决方法是什么?
删除字段? http://framework.zend.com/apidoc/2.2/classes/Zend.Form.Form.html#remove
或者?