0
0

Laravel 学習(コントローラ)

Posted at

コントローラ作成

Laravelプロジェクト直下で下記コマンドを実行すると、
基本コード付きのファイルが作成される。

php artisan make:controller HelloController
Laravelプロジェクト\app\Http\Controllers\HelloController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HelloController extends Controller
{
    //
}

下記が名前空間

namespace App\Http\Controllers;

下記がインポート

use Illuminate\Http\Request;

コントローラ割当

HelloController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HelloController extends Controller
{
    public function index() {
        return <<< EOF
        <h1>Test</h1>
        <p>Hello</p>
        EOF;
    }
}
web.php
Route::get('/hello','App\Http\Controllers\HelloController@index');
// Route::get('/hello','HelloController@index');

web.phpで割り当てるコントローラのパスはおそらくルートパスによって変わる。
使用環境はxampp使ってルートパスを変更していない状態。

ルートパラメータ使用

HelloController.php
    public function index1($name='name none', $age='age none') {
        return <<< EOF
        <h1>{$name}</h1>
        <p>{$age}</p>
        EOF;
    }
web.php
Route::get('/hello1/{name?}/{age?}','App\Http\Controllers\HelloController@index1');

シングルアクションコントローラ

HelloControllerに__invoke()だけ存在するように変更し、ルーティングも変更。

HelloController.php
class HelloController extends Controller
{
    public function __invoke()
    {
        return <<< EOF
            <h1>Test</h1>
            <p>Hello</p>
        EOF;
    }
}

web.php
Route::get('/hello','App\Http\Controllers\HelloController');

Request, Response

Request, Responseをindexに追加するだけでインスタンス生成される。(DI)

HelloController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;

class HelloController extends Controller
{
  
   public function index(Request $request, Response $response) {

        $html = <<<EOF
        <h3>Request</h3>
        <pre>{$request}</pre>
        <h3>Response</h3>
        <pre>{$response}</pre>
        EOF;
       $response->setContent($html);
       return $response;
   }

}
web:php
Route::get('/hello','App\Http\Controllers\HelloController@index');

用語

参考

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