LoginSignup
2
2

Laravelのルーティングからコントローラー,MVCまで

Last updated at Posted at 2022-04-15

ルーティングの書き方

下がルーティングの書き方です。

routes\web.php
Route::get('tests/test','TestController@index'); 
             //url        コントローラーのindex

Route::get('user/index','UserController@index'); //url  コントローラー

下がコントローラーの書き方です。

Controllers\user.php
class ContactFormController extends Controller
{
    //省略

    public function index()
    {
        //
        return view('user.index');//viewのuserファイルのindex.phpに書いてある処理のこと
    }

   //省略

}

コントローラーで処理をしてviewに渡します。

views\users\index.php
テスト

ルートグループ

ルートごとに定義するのではなく、一括して適用するため方法でRoute::groupメソッドを使います。

routes\web.php
Route::Group(['prefix' => 'user','middleware' => 'auth'],function(){
Route::get('index','UserController@index')->name('contact.index');
});
  //配列     
  //prefixでフォルダ指定   
  //middleware' => 'auth認証の場合表示 
  //function コールバック

Auth::routes();//認証機能

スクリーンショット 2022-04-16 23.59.22.png

のような画面になりました。

コントローラーのアクション一覧

 次にコントローラーについてです。下はコントローラーアクション一覧です。

スクリーンショット 2022-04-16 17.00.37.png

引用 https://readouble.com/laravel/6.x/ja/controllers.html

コントローラー

コントローラーはクライアントから送られてきたデータをサーバーに返す時に
モデルやviewに指示を出すような処理をする部分です。

MVCモデルをみてみると

image.png

引用  https://qiita.com/s_emoto/items/975cc38a3e0de462966a

上のような流れで処理がされます。

コントローラー作成

コントローラーを作成する時は下のような構成になります。

App\Http\Controllers

コントローラー作成をします。

$ php artisan make:controller コントローラー名

今回はUserコントローラーを作ります。

$ php artisan make:controller TestController

下のように作成されます。

app\Http\Controllers.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{
    //
}

MVCモデルを書く

MVCそれぞれの書き方を書いていきます。

⚫︎ルーティング

routes/web.php
Route::get('tests/test','TestController@index');

⚫︎コントローラー

TestController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{
    //
    public function index()
    {
       return('tests.test');
    }
}

viewファイルにはbladeをつけるようにしてください。

views\tests\test.blade.php
PHP

サーバーを起動し、http://127.0.0.1:8000/tests/testで見ると
PHPと出力
されます。

スクリーンショット 2022-04-15 18.36.15.png

dd($変数;

dd($変数);は***(do + var_dump)を省略***した形です。

Controllers\TestController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\Test;     //モデルのデータを持ってくる

class TestController extends Controller
{
    
     public function index()
    {
        $values = Test::all(); //Testモデルから取ってくる
        dd($values); //ここ
      //do + var_dump
       return view('tests.test');
       //viewのファイル
     }
}

すると、
スクリーンショット 2022-04-15 18.44.42.png
のように変数の中身を表示させてくれます。

$変数(ここでは$values)のファイルをviewファイルで表示させます。
それで

Controllers\TestController.php
<?php

//省略

class TestController extends Controller
{ 
     public function index()
    {
        $values = Test::all(); //Testモデルから取ってくる
        //dd($values);
      //do + var_dump
       return view('tests.test',compact('values'));  //この部分を追記
       //viewのファイル
     }
}

そしてviewに表示させたいことを書きます。

test.blade.php
PHP<br>
@foreach($values as $value) //複数形 単数形で表示し配列を表示
{{$value->id}}<br>
{{$value->text}}<br>

@endforeach

これで出力すると

スクリーンショット 2022-04-15 18.56.53.png

ここで表示されているのは以前tinkerで作ったデータベースの中身のことです。

blade

上のviewのコードはビューの中にPHPを直接記述することを許している
]Laravelのテンプレートエンジン
です。

{{}}XSS攻撃を防ぐためにPHPのhtmlspecialchars関数を自動的に通されます

参考資料

2
2
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
2
2