передача данных из промежуточного программного обеспечения для просмотра или альтернативный способ отображения определенных данных на каждой странице
На моем веб-сайте у меня есть довольно сложная категория, которую я должен показывать в каждом представлении (на стороне клиента), поэтому я подумал, что поместил код для создания категории в промежуточное программное обеспечение и передал результат в представления
Итак, я создал свое промежуточное программное обеспечение, но я не могу понять, как я могу передать его данные в свое представление без необходимости что-то делать в контроллерах . Я пробовал эти методы в своем промежуточном программном обеспечении
<?php
namespace App\Http\Middleware;
use Closure;
class CtegoryMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$request->merge(array("all_categories" => "abc"));
$request['all_categories']= 'abc';
return $next($request);
}
}
Маршрут:
Route::group(['middleware' => ['category' ]], function () {
Route::get('/', 'HomeController@index');
});
Но, на мой взгляд, когда я повторяю all_categories, я получить
Undefined variable: all_categories
кстати, я проверил, повторив что-то, промежуточное программное обеспечение запускается по запросу
1 answers
Я думаю, что в вашем случае использования глобально доступной переменной представления должно быть достаточно.
<?php
namespace App\Http\Middleware;
use Closure;
class CtegoryMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$request->merge(array("all_categories" => "abc"));
$request['all_categories']= 'abc';
/**
* This variable is available globally on all your views, and sub-views
*/
view()->share('global_all_categories', 'abc');
return $next($request);
}
}
Переменная загружается один раз (если вы выполняете запрос к базе данных, запрос будет выполнен только один раз), а затем переменная сохраняется в фабрике представлений.