1. TOP
  2. お役立ち情報
  3. PHPフレームワーク Laravel入門【連載第6回】ページ間の遷移(1)

PHPフレームワーク Laravel入門
【連載第6回】
ページ間の遷移(1)

投稿日
2020.03.04
更新日
2023.05.19
PHPフレームワーク Laravel入門【連載第6回】ページ間の遷移(1)

前回のまとめ

前回はHTMLを記載するbladeファイルについて学習しました。
今回はページ間の遷移を実現する書き方を学んでいきましょう。

今回の作業手順

今回の作業手順を確認しましょう。

1.ルーティングの追記
2.HelloWorldControllerにmoveメソッドを追加
3.bladeファイルmove.blade.phpを追加

今回実装する処理は、新たにHelloWorldControllerに別ページ
http://localhost/testproject/public/moveの処理、
そしてもう一つのNextPageController.phpを作成しページ間の遷移を実装します。

1、ルーティングの追記

まずルーティングの記述を行いましょう。
\routes\web.phpの20行目に下記の記述を行います。

Route::get(‘/move’, ‘HelloWorldController@move’);

\routes\web.phpの20行目に下記の記述を行います

ではこの処理の意味を学習しましょう。
「http://localhost/testproject/public/move」にアクセスを行うとHelloWorldControllerのmoveメソッドの処理を行う」という意味です。
ここで重要なのは
「http://localhost/testproject/public/helloworld」にアクセスを行った場合の処理を記述している18行目との違いです。
コントローラー名は一緒ですが右の@「アットマーク」以降の文字が実行してほしいメソッド名を表しているのです。

つまり「HelloWorldController@index」という記述は「HelloWorldControllerのindexメソッドを指定」
対して「HelloWorldController@move」は「HelloWorldControllerのmoveメソッドの処理を指定」
となります。この記述方法は必ず押さえておきましょう。

2、HelloWorldControllerにmoveメソッドを追加

次はHelloWorldControllerにmoveメソッドを追加します。
\app\http\HelloWorldController.phpファイルを開き16行目から下記の処理を追記しましょう。

// moveメソッド
public function move()
{
return view(‘move’);
}

HelloWorldControllerにmoveメソッドを追加

ではこの処理の意味を学習しましょう。
「moveメソッドの処理はmove.blade.phpというbladeファイルを表示」の意味となります。
前に記載を行った「return view(‘helloworld’);」の処理と同じ文法で記載することが可能です。
Laravelの処理は、このように使いまわすことで非常に素早くプログラミングを行うことができます。

3、bladeファイルmove.blade.phpを追加

今度はbladeファイルの追加です。
こちらも前のhelloworld.blade.phpの追加と同じ方法です。
実際に行っていきましょう。
\resource\viewsフォルダに移動します。
次に「move.blade.php」ファイルを追加しましょう。

3、bladeファイルmove.blade.phpを追加

作成を行った後move.blade.phpファイルを開いて下記のHTMLを記述しましょう。

<!DOCTYPE html>
<html lang=”ja”>
<body>
<p>遷移元ページ<p>
<form action=”{{action(‘NextController@index’)}}” method=”POST”>
<input type=”text” name=”school” value=”” />
      <input type=”submit” name=”submit” value=”ページ遷移” />
</form>
</body>
</html>

この時点で一度
http://localhost/testproject/public/moveにアクセスを行いましょう。

この時点で一度http://localhost/testproject/public/moveにアクセスを行いましょう。

上記の画面が表示されます。
意味は「ページ遷移先のNextController@indexが定義されていません」とエラーが発生し表示を行ってくれるのです。
実はformタグのaction要素に記載された「{{action(‘NextController@index’)}}」でエラーが発生しているためこのような画面が表示されます。

bladeファイル内で中かっこ2つ囲んでいる場所ですが、これはPHPのechoと同じ働きをします。
その中では「action(‘NextController@index’)」と記載されているためこのaction関数の戻り値をechoするという意味となります。
action関数は引数で指定された「NextController@index」にアクセスするためのURLを作成するものです。

参考URL:Laravel 5.7 公式サイト action()関数
https://readouble.com/Laravel/5.7/ja/helpers.html#method-action

ですが、NextControllerをまだ作成を行っておりません。そのためエラーが発生し上記の画面が表示されたのです。
HTML、またはLaravelを使用していない状態のPHPではformタグのaction要素に存在しないページのURL記載を行ってもエラーの発生は起きません。
実際に遷移先のURLにアクセスしない限り実装、未実装が把握できないのです。
Laravelはこのような書き方を行うことで遷移先のURLにアクセスせずともエラーを表示してくれます。
そのためプログラム未入力かどうかのチェックが行いやすいのです。
ぜひ中かっこ2つで囲むという方法を覚えておきましょう。
遷移先のページ作成方法は次回の記事で行います。

まとめ

  • 遷移元のルーティングに追記
  • HelloWorldControllerにmoveページの処理を記載
  • move.blade.phpの作成とbladeファイルの内容を記載

上記作業は今後もLaravelの開発で行うものです。
まずはこの方法をしっかりと学習しましょう。

次回は、ページ間の遷移についての方法について理解を行っていきましょう。

関連記事