LoginSignup
6
9

More than 5 years have passed since last update.

Laravel5でHTML/Form Helper等を使わない場合の対応メモ

Last updated at Posted at 2015-05-05

Laravel5から、HTML/Formヘルパーが標準では読み込まれなくなりました。また、普通のForm(POST)でも、csrf_tokenが要求されうようになったので、無理に使うこともないかなと。

Laravelに限らず、HTML系のHelperってあまり意味を感じないし、ここのところは、各種JS,CSSフレームワークとの連動が必要なのでむしろ邪魔です(強いて言うなら、postでdeleteする時に1行で書ける時だけ便利)。

Helperを使わない場合に遭遇する面倒なことへの対処をまとめる。

Form関連

action先の指定

action先の指定は悩ましい。action="hoge/create"などとするのが無難だが、hoge/index=/みたいに指定していた際に、相対パスが崩れてしまう(とにかくうまくいかない)。なので、url()を使う(で囲む)のが無難。

<form method="post" action="{{url('posts/create')}}" id="form_create">

csrf_tokenの送付

csrf_tokenはcsrf_token()で生成できるので、hiddenのvalueに入れて送付。

<input type="hidden" name="_token" value="{{csrf_token()}}">

idの送付

更新処理等で、

{!! Form::open(['action' => ['PostsController@postEdit', $post->id]]) !!}

という感じで送ったidは、Controller側で、

public function postEdit(Request $request,$id){}

として受けられるが、普通に

のhiddenでPOSTすると、$request->idで取得する必要がある。

delete(等の際、Formで改行が入るのを直す)

多くのRESTでは、deleteはpostで受ける。ということは、Formを仕込む必要がある。これを、Helperだと、

{!! Form::open(['action' => ['PostsController@postDelete', $article->id]]) !!}

という感じで書ける。getにして、で書いてしまってもまあ、内部システムならいいかなと思うが、Formで書くと、長い。まあ、長いのはいいのだが、

はblockなので、改行が入る。こを防ぐには、styleでinlineを指定する。
<form method="post" action="{{url('posts/delete')}}" style="display:inline;">
    <input type="hidden" name="id" value="{{$post->id}}">
    <input type="hidden" name="_token" value="{{csrf_token()}}">
    <button type="submit" class="btn btn-info btn-xs btn-delete">削除</button>
</form>

とりあえず、こんな感じ。

必要に応じて随時メモる。

6
9
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
6
9