Laravel体験記|View
Laravel体験記|Viewを触る
基本的な使い方
viewファイルの用意
- resources/viewフォルダにviewsファイルを格納していく。
- viewフォルダ内はフォルダを掘って大丈夫。
resources/views/hello/index.phpを作成。
<h1>Hello Index</h1>
<p><?php echo $msg; ?></p>
controllerを用意
HelloController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index($msg="default message"){
$data = [
'msg' => $msg,
];
return view("hello.index", $data);
}
}
ルーティング
web.php
Route::get('hello/{msg?}', 'HelloController@index');
ブラウザでアクセス
localhost/hello/
GETパラメーターを使う場合
controllerアクションにRequestインスタンスを渡すようだ。
public function index($msg="default message", Request $request){
$data = [
'msg' => $msg,
'id' => $request->test,
];
return view("hello.index", $data);
}
「?test=1」
といったGETパラメーターを渡すと、
「$request->test」
に値が渡ってくるようだ。
なお、GETパラメータが入っていなかった場合でもエラーにはならなかった。
ちょっと脱線するけど、この動的に$requestインスタンスがtestというメンバ変数を持つという仕組みどうやるんだ?と思った。
実装コードみてないけど、phpだから可変変数使えばできるのか。と思った。
$$key
みたいな。
Bladeを使う
Bladeというテンプレートエンジンがあるらしい。
なぜそんなものを使わなきゃならんのや?と正直思うが、みんな使ってるようなので頑張って使ってみる。
bladeファイルを用意
resources/views/hello/index.blade.php
<h1>Hello Index</h1>
<p>{{$msg}}</p>
<p><?php echo $id; ?> / {{$id}}</p>
試しに普通のphpも置いてみたが、どちらも動作するようだ。
まあ自動でエンティティしてもらえるようなので、{{$msg}}こっちを使うべきなんだろう。
フォームを使う
view
<h1>Hello Index</h1>
<p>{{$msg}}</p>
<p><?php echo $id; ?> / {{$id}}</p>
<form method="post" action="{{action('HelloController@index')}}">
{{csrf_field()}}
<input type="text" name="msg">
<input type="submit">
</form>
publicへのパスの取得方法がよくわからんかった。
とりあえず、actionメソッドを見つけたのでそれ使ってパスを取得した。
Controller
public function post(Request $request){
$data = [
'msg' => $request->msg,
'id' => $request->test,
];
return view("hello.index", $data);
}
ルーティング
Route::post("hello", "HelloController@post");
Route::postになっているのがミソ。
次回
view続き。blade構文など