こんにちは、コバヤシです。
「Laravel管理外のページでLaravelを組み込みたい!」ってことはありませんか?
1サイトまるごとLaravelで構築するのが通常の構築方法だと思いますが、案件によってはLaravel管理外(フレームワーク外)でもLaravelを使用したいこともあるはず。。
例えば、稼働中のサイトへLaravelで管理している情報を表示するとか。。。
どこでもLaravelを使いたい!、そんなLaravel好きに、どこでもLaravelを使用する方法をお教えします。
ズバリこのコードを書くだけ
以下のコードをLaravelを使用したいPHPファイルに記述すればOKです。
(読込部分のパスは適宜変更してください)
<?php require_once '../laravel/vendor/autoload.php'; $app = require_once '../laravel/bootstrap/app.php'; $app->make('Illuminate\Contracts\Http\Kernel') ->pushMiddleware(\App\Http\Middleware\EncryptCookies::class) ->pushMiddleware(\Illuminate\Session\Middleware\StartSession::class) ->handle(Illuminate\Http\Request::capture());
pushMiddlewareでEncryptCookiesとStartSessionを指定しているので、ログインの判定もできます。
他に利用したいミドルウェアがあればpushMiddlewareで追加すれば使えるはず。
後は、こんな感じで、
<?php require_once '../laravel/vendor/autoload.php'; $app = require_once '../laravel/bootstrap/app.php'; $app->make('Illuminate\Contracts\Http\Kernel') ->pushMiddleware(\App\Http\Middleware\EncryptCookies::class) ->pushMiddleware(\Illuminate\Session\Middleware\StartSession::class) ->handle(Illuminate\Http\Request::capture()); $user = \App\User::find(1); dd($user);
Eloquentでも何でも使えるので、後はご自由に。
もちろん、以下のようにすればCKFinderの認証処理でも使用できます。
ckfinder/config.php
<?php require_once '../laravel/vendor/autoload.php'; $app = require_once '../laravel/bootstrap/app.php'; $app->make('Illuminate\Contracts\Http\Kernel') ->pushMiddleware(\App\Http\Middleware\EncryptCookies::class) ->pushMiddleware(\Illuminate\Session\Middleware\StartSession::class) ->handle(Illuminate\Http\Request::capture()); $config['authentication'] = function () { return Auth::check(); };
まとめ
このコードを使えば、簡単にLaravelを組み込むことができます。
「どこでもLaravelを使いたい!」って方にぜひ。
(基本的には全部Laravel内に収めましょう。。)