私のCakePHP 3プロジェクトに、ユーザーデータを編集するフォームがあります。私の場合、管理ユーザーは他のユーザーの役割を編集できます。Cakephp 3 - newEntity/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は取得しません。両方とも次の配列を与えます:
私はカスタムバリデーターを使用します。これは、idとroleだけが編集のために検証する必要があるためです。
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;
}
「編集」バリデーターに制限を追加しようとしましたが、IDは関係なく追加されます。しかし、 'edit'バリデーターが使用されています。 validateパラメータを 'default'に変更すると、デフォルトのバリデータから予想されるすべてのエラーが返されますが、idはまだ追加されません。
ここには何かがありますか?私は基本的なCakePHPのものでなければなりません。
をあなたのeditアクションを焼くましたか?あなたのコードはそれのようには見えません。もしあなたが通常どのように動作するのか分かりますか?投稿時に常にget()とpatchEntity()を呼び出します。編集のためのnewEntity()はありません。 – mark
私はベークしましたが、validationEdit関数を追加しました – DijkeMark
いいえ、またはコードにnewEntity()が存在しませんでした... – mark