PHP

Laravel-adminのcreateでDBに追加したあとに何か別の操作をする方法

Laravel-adminでテーブルにデータを追加した後に、別のテーブルにも直後にデータを追加するというようなカスタマイズをしたいと思ったものの、Laravel-adminがそもそもLaravelの正規ライブラリではなく、しかも中国製なので参考記事があまりませんでした。

というわけで、自分でソースコードを探ってきました。

修正箇所

テーブルにデータを追加した後に何か処理をカスタムで行いたい場合には, /vender/encore/laravel-admin/src/Form.phpで定義されているFormというクラスを継承したカスタムクラスを作成する必要があります。

今回はLaravel-adminのテーブル別のページに対応したController.phpに、そのカスタムクラスを直書きすることにします。

もし、Formのカスタムクラスの定義を別ファイルで行いたいという場合には各自でお願いします。

/app/Admin/Controllers/SampleControllers.phpの変更部分を以下に載せます。

コードの解説

ざっくりな説明ですが, 上記のコードではFormクラスのカスタムクラスを作成し、redirectAfterStore()というメソッドをオーバーライドしています。

このメソッドはFormクラスのStore()で、管理画面で追加したデータをデータベースに保存した後に呼ばれるメソッドで、ここに行いたい処理を記述することよって好きな操作を実行させることができます。