フロントエンド
Ext 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()
バックエンドの受信時
すべてのフィールドを変更: Request Method: PUT Form Data: {"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() は、field_bar が必要なため false を返します。
解決への道は?
フィールドを削除しますか? http://framework.zend.com/apidoc/2.2/classes/Zend.Form.Form.html#remove
または?