Labs

<< 最初 < 前ページ 次ページ > 最後 >>
icon namespaceを利用したルートグループ化 (2019/08/08)
Middlewareを利用したルートグループ化と異なり、処理を実装しないルーティングに便利ネームスペースを省略できる

namespaceファイルの生成

Controllers/namespace/Controllerファイル を作成し、namespaceを設定
例として、App/Http/Controllers/Sample を namespace
namespace App\Http\Controllers\Sample;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class SampleController extends Controller
{

    public function index(Request $request)
    {
        $data = ['msg' => 'Sample index'];
        return view('hello.index', $data);  #hello/index.blade.php を作成済
    }

    public function other(Request $request)
    {
        $data = ['msg' => 'Sample Other'];
        return view('hello.index', $data);  #hello/other.blade.php を作成済
    }

}

ルート設定

namespace() でグループ化し、各ルートを設定
Route::namespace('Sample')->group(function() {
    Route::get('/sample', 'SampleController@index');
    Route::get('/sample/other', 'SampleController@other');
});
icon Middlewareを利用したルートグループ化 (2019/08/08)
Middleware を利用して、ルートをグループ化し、共通事前処理を行う

Middleware生成

app/Http/Middleware/ にMiddlewareファイルを生成
$ php artisan make:middleware HelloMiddleware

ルートの設定(routes/web.php)

- Route::middleware に Middlewareクラスの配列を設定
- group() の引数は無名関数とし、各Routeを記述
Route::middleware([HelloMiddleware::class])->group(function() {
    Route::get('/hello', 'HelloController@index')->name('test');
    Route::get('/hello/user/{id}', 'HelloController@user')->where('id', '[0-9]+');
    Route::get('/hello/bye', 'HelloController@bye');
    Route::get('/hello/other', 'HelloController@other');
});

Middleware ファイルに共通処理を記述

ルートで Middleware をルートすると、handle($request, Closure $next) が呼ばれる
Request をバインドしておく
    public function handle($request, Closure $next)
    {
        $hello = 'Hello! This is Middleware!!';
        $bye = 'Good-by, Middleware...';
        $data = [
            'hello' => $hello,
            'bye' => $bye
        ];
        $request->merge($data);
        return $next($request);
    }

Controller ファイルで Middlewareを利用

Middlewareでバインドした Request を利用
    public function index(Request $request)
    {
        $data = ['msg' => $request->hello];
        return view('hello.index', $data);
    }

    public function bye(Request $request)
    {
        $data = ['msg' => $request->bye];
        return view('hello.index', $data);
    }
icon artisanコマンド (2019/08/07)

バージョン

$ php artisan -V
$ php artisan --version
Laravel Framework 5.8.30

ヘルプ

$ php artisan help {Word}

make:model の Help

$ php artisan help make:model
Description:
Create a new Eloquent model class
Usage:
make:model [options] [--]
Arguments:
name The name of the class
Options:
-a, --all Generate a migration, factory, and resource controller for the model
-c, --controller Create a new controller for the model
-f, --factory Create a new factory for the model
....

artisan サーバ

デフォルト

$ php artisan serve

Host, Port指定

$ php artisan serve --host=192.168.11.56 --port=8000

ファイル生成

php artisan meke:{Type} {File Name} --{Option}

Type

make:auth
make:channel
make:command
make:controller
make:event
make:exception
make:factory
make:job
make:listener
make:mail
make:middleware
make:migration
make:model
make:notification
make:observer
make:policy
make:provider
make:request
make:resource
make:rule
make:seeder
make:test

Option

--controller
--resource
--factory
--migration
--all

CRUD Controller生成

$ php artisan make:controller {Controller Name} --resource

CRUD Controller, Model生成

$ php artisan make:controller {Controller Name} --resource --model=Topic

API Controller

$ php artisan make:controller {Controller Name} --api

Model生成

$ php artisan make:model {Model Name}

Model生成

$ php artisan make:model {Model Name} --all
Factory、Migrationファイルが生成
database/factories/{Model Name}.php
database/migrations/{Model Name}.php

Route一覧

$ php artisan route:list
+--------+----------+----------+------+---------+--------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+----------+------+---------+--------------+
| | GET|HEAD | / | | Closure | web |
| | GET|HEAD | api/user | | Closure | api,auth:api |
+--------+----------+----------+------+---------+--------------+

エラーテンプレートの作成

以下のコマンドで、resources/views/errors/ にエラー用のbladeファイルが作成される
$ php artisan vendor:publish --tag=laravel-errors

<< 最初 < 前ページ 次ページ > 最後 >>