現在laravel-adminというlaravel管理画面用ライブラリを使用し、管理画面を構築しています。
こちら非常に多機能で利便性が高いのですが、https環境下で動確している時に、下記現状に遭遇しました。
- 下記コードをadmin/routes.phpに記述し、ルーティングを行う
php
1$router->resource('hoges', HogeController::class);
- 特定のアイテムの編集画面(hoge/_id/edit)に入る
- 適当な内容を更新し、送信ボタンを押下
- 通常通りであればajax処理によるDB操作後、一覧ページ(hoge/)にリダイレクトし、右上に更新が完了した旨のアラートバーが表示される
- しかしhttps環境下ではボタン押下後、何も更新アクションがないまま、hoge/_idに遷移(フォーム値は保持したまま)
- そこで更に送信ボタンを押下すると当然404エラーとなる
この現象に遭遇し、色々と調べた結果hoge/_id/editページ内form actionのURL値がhttpsではなくhttpであることが原因と判明しました。
そこで質問なのですが、form actionの値をlaravel-adminのviewファイルを上書き、もしくはなんらかの別の方法で対応し、httpsに変更する方法は何かないでしょうか?
現在暫定対応として下記コードで、form action値を変更できるので、hoge/_id/editからhttps://fuga.com/admin/hoge/_id を生成するヘルパー関数を定義し、それをaction URL値として設定
php
1$form->setAction('https://fuga.com/admin/hoge/_id');
またそれだけだと保存後のリダイレクトが行われないので、下記処理も追記することで、疑似的に意図した通りの動作になるようにしております。
php
1$form->saved(function (Form $form) { 2 return redirect('/admin/hoges'); 3});
ただ、これだとadmin/Controllerに定義したファイル群全てに記載する必要があるので、あまり良い選択とは言えません。
laravel-adminを使用しており、こう言った現象に遭遇、ないしは解決した方がいらっしゃいましたら、是非とも解決方法をご教授頂けると幸いです。
あなたの回答
tips
プレビュー