1

ビューでフォームを送信しましたが、これはコントローラーで処理されます。通常、コントローラーは次のようにして編集を保存します。

if ($this->Requests->save($request)) {
    // the request have been saved.
}

次に、次のような afterSave() ステートメントを使用してエディターのアクティビティを追跡する別の挿入クエリを作成しました。

public function afterSave()
{
    // here I need the data submitted from $this->request->save($request));
    // how can I do this to use the data in the query?

    // insert query here.
}

リクエストに加えられたすべての変更に使用したいので afterSave() を使用したいのですが、投稿されたデータにアクセスする方法が見つからないようです。

ドキュメントによると、 afterSave() には次のパラメーターが含まれています。

afterSave(Event $event, EntityInterface $entity, ArrayObject $options)

私が望むことを達成するためにこれらは必要ですか?もしそうなら、どうすればそれらを適切に使用できますか?保存アクションの内容を確認するためのデバッグ情報を取得できないように見えるためです。

質問は次のとおりです。

$this->Requests->save($request)beforeSave() または afterSave() ステートメントで保存されたデータにアクセスして、そのデータを別のクエリで使用するにはどうすればよいですか?

4

2 に答える 2

4

beforeSave() または afterSave() ステートメントで $this->Requests->save($request) で保存されたデータにアクセスして、そのデータを別のクエリで使用するにはどうすればよいですか?

両方のコールバックの 2 番目の引数はエンティティ データです。リクエスト全体が必要でない限り、マーシャラーによってエンティティに変換されたすべてのデータを 2 番目の arg から取得できます$entity。メソッドに関するドキュメントを確認してください。

あなたの問題が何であるかはわかりませんが、そこで実行debug($entity);するとエンティティ データが表示されます。そうでない場合は、コードに何か問題があります。

エンティティを使用して、そこでやりたいことを何でもしてください。

于 2016-01-27T14:05:34.127 に答える