2015-07-27 6 views
0

Я хочу предварительно загрузить базовые данные базы данных в сеанс всякий раз, когда загружается любая из страниц.Как предварительно загрузить данные в сеанс laravel?

Сценарий: 1) любая загрузка страницы, проверьте сеанс, если данные существуют или нет. 2) если да, ничего не делайте, если не загружать данные в базу данных в сеанс.

Любая идея, где я должен ее кодировать или как это достичь?

ответ

0

Если вы хотите выполнить это на каждом просмотре страницы (убедитесь, что это действительно каждый запрос, поступающий в ваше приложение), вы можете создать __constructor в своем основном контроллере (Http/Controllers/Controller.php) и заполнить сеанс там.

namespace App\Http\Controllers; 

use Illuminate\Foundation\Bus\DispatchesJobs; 
use Illuminate\Routing\Controller as BaseController; 
use Illuminate\Foundation\Validation\ValidatesRequests; 

abstract class Controller extends BaseController 
{ 
    use DispatchesJobs, ValidatesRequests; 

    public function __construct() { 
     // fill session here 
    } 
} 

Другой способ, конечно, промежуточное. Преимущество здесь также заключается в «недостатке» - вам нужно будет вставить промежуточное ПО в каждый контроллер, который вы хотите проверить, но вы можете выбрать некоторые маршруты/контроллеры, которые не должны выполнять эту проверку.

class FillSessionData { 

/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
public function handle($request, Closure $next) 
{ 
    // fill session here 
    return $next($request); 
} 

Если вы идете с раствором промежуточного слоя, вам нужно добавить его к вашему Http/kernel.php в массиве $ routeMiddleware:

protected $routeMiddleware = [ 
    //..... 
    'sessionSetter' => 'App\Http\Middleware\FillSessionData', 
]; 

и включить его в контроллер, который требуется эту проверку выполнить в конструкторе также с помощью:

$this->middleware('sessionSetter'); 
+0

Спасибо, первый метод работает! – LoveZero

+0

Добро пожаловать @LoveZero – baao

Смежные вопросы