Perl日記

PerlとかRubyとかPHPとかPythonとか

Laravel5.1入門その4

Laravelは5になってからPSR-4に沿うようになったので、appディレクトリの下を自由に使うのが良いらしい。

APIデバッグ用のページと管理者用のページを作る時にどうするかなと思って、まずやってみた。

Controllerの下にApi、Debug、Adminの名前空間を掘って、それぞれのリクエスト共通のBaseControllerを作る。

$ php artisan make:controller Debug\\BaseController
$ php artisan make:controller Admin\\BaseController
$ php artisan make:controller Api\\BaseController

ログイン用のコントローラもそれぞれ作る。

$ php artisan make:controller Debug\\SessionController
$ php artisan make:controller Admin\\SessionController

APIのテスト用コントローラ。

$ php artisan make:controller Api\\PingController


デバッグ用ページのBaseController。
昨日作ったFirefoxのみ許可するミドルウェアをつけてみる。

app/Http/Kernel.php

    protected $middleware = [];

    protected $routeMiddleware = [
        'firefox' => \App\Http\Middleware\AuthenticateUserAgent::class,
    ];

app/Http/Controllers/Debug/BaseController.php

<?php

namespace App\Http\Controllers\Debug;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class BaseController extends Controller
{
    public function __construct()
    {
        $this->middleware('firefox');
    }
}

app/Http/Controllers/Debug/SessionController.php

<?php

namespace App\Http\Controllers\Debug;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Debug;

class SessionController extends BaseController
{
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        return view('debug.index');
    }
}

同じようなことをAdminもする。

ビューを用意。

resources/views/debug/index.blade.php

<html><h1>debug dayo</h1></html>

resources/views/admin/index.blade.php

<html><h1>admin dayo</h1></html>

最後にルーティング。

app/Http/routes.php

<?php
Route::get('/debug', 'Debug\SessionController@index');
Route::get('/admin', 'Admin\SessionController@index');

http://localhost/debugFirefoxでアクセス。

debug dayo と出る。



特定のURL(/debugがつくURLとか)の時にだけ動くミドルウェアは、こんな感じでしか作れないのかな。