1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【PHP】リクエストセッションの値が取得出来ないことがあるパターン【Laravel】

Last updated at Posted at 2020-01-06

同僚がハマっていたのでヘルプで入って見たらこうなってたよ っていうメモ

#問題
コントローラーで保存したはずのリクエストセッションが取得出来ない。
(そもそも保存出来てない?)

##コード

hoge.blade.php

@extends('base')
@section('content')

<form>
 <input type="text" name="name">
 <input type="text" name="age">

 <button type="button" onclick="postNext()">Next</button>
</form>

@endsection

@section('js')
  <script type="text/javascript" src="js/hoge.js"></script>
@endsection

hoge.js
function postNext() {
  $('form').attr('action', postUrl);
  $('form').submit();
}

色々と端折っているものの、正常に動く形です。

#原因
chromeのdeveloper toolsでNextを押下した時のNetworkタブを確認していたら画面遷移直前でerrorのpostを発見。

継承しているbase.blade.phpの中に<form> ~ </form>が存在していた。
その状態でタグ指定でsubmitしていたため、正常なsubmitと不正なsubmitを同時に行っていた。
(成功するパターンもあったのが、ここら辺の判断をどうやっているかまでは追っていない)

#修正
本来postされるべきformにIDを付けてJSファイルをタグ指定ではなく、ID指定でsubmitするようにした。

#あとがき

同僚がなぜこのような実装したかまでは言及していない。(めちゃくちゃ切迫したスケジュールの中で頑張ってるので聞けなかった)
個人的にはjsでsubmit記述する必要があるのかな?とも思った。

submit前に処理を入れたかったとしても以下の形で良い気がする

$('#hoge_form').submit(function() {
  ~
});

あんまりこういう事はないと思うけど、一体験談として。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?