我在CakePHP 3項目中有一個表單,用於編輯用戶數據。在我的情況下,管理員用戶可以編輯其他用戶的角色。CakePHP 3 - 新實體/ patchEnity不使用提供的ID
發佈表單時(實際請求是由於編輯導致的「PUT」),我同時獲得用戶的角色和ID。
請求數據:
Array
(
[role] => admin
[id] => 2
)
該進入的數據完整和正確的。但是,當我將數據添加到' - > newEntity'或' - > patchEntity'時,該角色被正確採用,但是id只是未被添加。
$user = $this->Users->newEntity($this->request->data, array('validate' => 'edit'));
$user = $this->Users->newEntity();
$user = $this->Users->patchEntity($user, $this->request->data, array('validate' => 'edit'));
在上述兩種情況下,我都得到了角色,但不是id。無論給下面的數組:
Array
(
[role] => admin
)
我用一個自定義的驗證,因爲只有ID和角色需要驗證進行編輯。
public function validationDefault(Validator $validator)
{
$validator
->integer('id')
->allowEmpty('id', 'create');
$validator
->requirePresence('username', 'create')
->notEmpty('username');
$validator
->requirePresence('password', 'create')
->notEmpty('password');
$validator
->allowEmpty('role');
return $validator;
}
public function validationEdit(Validator $validator)
{
$validator
->integer('id')
->requirePresence('id')
->notEmpty('id');
$validator
->allowEmpty('role');
return $validator;
}
我試着給'edit'驗證器添加更多限制,但是id永遠不會被添加。 '編輯'驗證器正在使用。將validate參數更改爲'default'會給出默認驗證器的所有預期錯誤,但是id仍然不會被添加。
有什麼明顯的我在這裏失蹤?我應該是一些基本的CakePHP的東西。
你烤的編輯操作?你的代碼看起來不像,如果你通常會看到它的工作原理。 get()總是在發佈時加上patchEntity()調用。沒有newEntity()進行編輯。 – mark
我做過烘焙,但是我添加了驗證編輯功能 – DijkeMark
不,您沒有,或者代碼中沒有任何newEntity()... – mark