3
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.

【Laravel】基本的なルーティングのまとめ

Last updated at Posted at 2019-12-03

#はじめに
現在Laravelについて学習しています。
その学習の履歴として今回はルーティングについてまとめました。
ざっくりとまとめているので、大枠を掴むためや復習のために見ていただけると幸いです。

#ルーティングについて
今回はHTTPメソッドgetについてまとめます。
全部で9種類です。
ルーティングは下記の形式です。

Route::get('URL', '処理');

処理がクロージャとアクションの場合に分けて説明します
クロージャとはfunction(引数)のことで無名関数という意味です。
アクションとはMVCのコントローラに含まれるものです。
クロージャの場合は6種類で、アクションの場合は3種類です。

#クロージャーの場合
処理がクロージャの場合について解説します
##1. URLからテンプレートをレンダリング
URLからテンプレートにレンダリングする場合について解説します。

routes/web.php
Route::get('/', function () {
	return view('welcome');
});

/にアクセスすると
view関数によりresources/views/welcome.blade.phpをレンダリングする

##2. URLからHTMLを直書き
レンダリングするだけでなくHTMLのソースコードを直書きすることもできます。

routes/web.php
Route::get('hello', function () {
	return '<html><body><h1>Hello</h1></body></html>';
});

/helloにアクセスすると
<html><body><h1>Hello</h1></body></html>を表示します

##3. 返すHTMLを変数として扱う(ヒアドキュメント)
上記の直書きの場合、HTMLが長くなるとソースが見にくくなります。
変数に代入して、見やすくしましょう

routes/web.php
$html = <<<EOF
<html><body><h1>Hello</h1></body></html>
EOF;

Route::get(hello, function ()  use ($html){
	return $html;
});

/helloにアクセスすると、
$htmlを表示します。

ヒアドキュメント
<<<EOF
~~
EOF;

~~の部分を変数に代入できるようにするために、EOFで挟みます。

##4. URLにパラメータを挿入する
URLにルートパラメータを記載する方法を説明します。

routes/web.php
Route::get('hello/{msg}', function ($msg) {
$html = <<<EOF
<html>
<body>
<h1>Hello</h1>
<p>{$msg}</p>
</body>
</html>
EOF;
	return $html;
});

ルートパラメータに$msgを指定します。

##5. ルートパラメータを2種類にする場合
ルートパラメータを2種類にする場合について説明します。

routes/web.php
Route::get('hello/{msg}/{pass}', function ($msg,$pass) {
});

URLの部分にパラメータを記述し、処理の部分に引数にルートパラメータを設定しましょう。

##6. パラメタの入力を任意にする場合
上記の記述方法だとルートパラメータが必須とになります。
そのため、任意のパラメータにする方法を説明します。

routes/web.php
Route::get('hello/{msg?}', function ($msg='no_message') {
});

注意する部分は二つです。

  • URL部分のルートパラメータに?をつける。
  • 処理の引数の部分に初期値を設定する。

#コントローラの場合
まず、コントローラを作成

ターミナル
php artisan make::controller HelloController

次に、コントローラにアクションを追加する

app/Http/Controllers/HelloController.php
public function index(){
	Return <<<EOF
		<html>
		<body>
			<h1>Hello</h1>
			if (count($msg)>0){
				<p>{$msg}</p>
			}
		</body>
		</html>
		EOF;
}

##1. ルーティングでアクションを指定する
処理をアクションに指定しましょう

routes/web.php
Route::get(hello, HelloController@index);

/helloにアクセスするとHelloControllerindexアクションに飛びます

##2. ルートパラメータの利用
ルートパラメータを設定します。
設定のやり方は上で説明したものと同じです。
入力を任意にするために?をつけています。

routes/web.php
Route::get(hello/{msg?}, HelloController@index);
app/Http/Controllers/HelloController.php
public function index($id= noname, $pass=unknown){}

##3. シングルアクションコントローラ
シングルアクションコントローラ(1つのアクションしかないコントローラ)の場合について説明します。

routes/web.php
Route::get{'hello', 'HelloController'}

上記の場合はアクション名の指定はいりません。

app/Http/Controllers/HelloController.php
public function __invoke() {}

コントローラが少しだけ特殊です。
__invoke()が必要です。

以上で基本的なルーティングの説明は終わります。

疑問、気になるところがございましたら、質問、コメントよろしくお願いします!!!

3
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
3
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?