質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

0回答

4674閲覧

laravel-admin、hoge/_id/editページ内のform acitionURLをhttpから変更できない

__sn

総合スコア11

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2018/03/26 22:19

現在laravel-adminというlaravel管理画面用ライブラリを使用し、管理画面を構築しています。
こちら非常に多機能で利便性が高いのですが、https環境下で動確している時に、下記現状に遭遇しました。

  1. 下記コードをadmin/routes.phpに記述し、ルーティングを行う

php

1$router->resource('hoges', HogeController::class);
  1. 特定のアイテムの編集画面(hoge/_id/edit)に入る
  2. 適当な内容を更新し、送信ボタンを押下
  3. 通常通りであればajax処理によるDB操作後、一覧ページ(hoge/)にリダイレクトし、右上に更新が完了した旨のアラートバーが表示される
  4. しかしhttps環境下ではボタン押下後、何も更新アクションがないまま、hoge/_idに遷移(フォーム値は保持したまま)
  5. そこで更に送信ボタンを押下すると当然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を使用しており、こう言った現象に遭遇、ないしは解決した方がいらっしゃいましたら、是非とも解決方法をご教授頂けると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mix-peach

2018/03/27 00:47

actionにセットされているURLがドメイン付なのであれば、内部でurl関数を利用している可能性が高そうかなと思うのですが、envファイルか、configのapp.phpファイルのURL指定は、「https」になっていますか??
__sn

2018/03/27 01:17

はい、.envのAPP_URLはhttpsを指定しており、またconfig/app.phpではurlを env('APP_URL', 'http://localhost')で指定しております
mix-peach

2018/03/27 02:01 編集

laravel-adminの中身をうろうろ見て回ってみました、、、config('admin.secure')をtrueにしてみたらどうでしょう?
__sn

2018/03/27 02:01

引き続きご返信ありがとうございます!そちらも既にtrueに設定済みでして...
mix-peach

2018/03/27 02:20

ソースを見る限りそれらでどうにかなるっぽいですがー・・・ actionがhttpになってしまう編集画面で、app('request')->getUri() でどんな値が取得されるか確認可能でしょうか?
__sn

2018/03/27 02:30

なお、表側でも同様のコードを試してみたところ、https環境下で「https://hoge.com」と返ってきました。ですので、やはり/adminのみでこの現象が起きているようです
mix-peach

2018/03/27 05:12 編集

うーん・・不思議ですね。。 「/」の時と、「/admin」で、サーバー側の設定が変わるような何かがあるか・・、 あるいは別のenvファイルを見ているとか?? そこの謎はさておいたとしても、「http://hoge.com/admin/hoge/_id/edit」が取得できているなら、httpsにはなるような?? とすると、config('admin.secure')がtrueで取得できていないのですかね? (ゴチャゴチャと引っ掻き回しているようで申し訳ないです・・・^^;)
__sn

2018/03/27 05:15

色々と不可解ですよね...なおconfig('admin.secure')はtadmin側でもtrueになっておりました...
__sn

2018/03/27 05:15

いえいえ、色々と参考意見くださって助かっております
mix-peach

2018/03/27 07:35

お行儀悪いですが、ライブラリのソースの中で直にdumpしてみるのはどうでしょうか。。。 actionに設定するURLを作っているところ(laravel-adminのsrc/Form:resource() かな?)で、「https にするか否か」の判定に使っている app('request')->getUri() と config('admin.secure') が想定していない値になっているのかも・・(と掘りさげていくと、迷宮に迷い込みそうですが。。)
__sn

2018/03/27 08:17

今丁度そちらを掘っていました。。。笑 仰る通りsrc/Form:resource() でURLを生成しておりました。 そこでapp('request')->getUri()を確認してみたところ、ローカル環境ではhttp or httpsに合わせたURLが生成されていますね。 なので、この辺りのコードには責はなく、リモートサーバー側の設定なのでは。。。とも考えはじめております。。。
mix-peach

2018/03/28 06:50

確かにコードは普通ですよね。だからこそhttpsにならない理由が分からない・・; 何もお力になれずに口だけ出した形になって申し訳ありません。。。 原因が見つかった際は今後の参考にしたいので是非おしえてください!
YamajiDaisuke

2018/05/25 06:52

hoge/_id/editページ内form actionの部分を見せていただけますか?Form::openしてるところです。また、環境でロードバランサとか使って分散してたりしますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問