У меня есть приложение бэкэнда / администратора Laravel, которое использует значение куки, чтобы установить состояние боковой панели, которая должна быть открыта, свернута или перемещена.
Я пытаюсь установить значение из файлов cookie на основена токене вошедшего в систему пользователя.Я попытался написать код $this->userToken = Auth::user()->token;
в __construct()
контроллера, но он не работает.Я получаю эту ошибку Trying to get property of non-object
.
Однако, если я напишу код в любом методе контроллера, он будет работать без ошибок.Я погуглил эту проблему и нашел несколько решений, но ни одно из них не смогло ее исправить.
Я также пытался просмотреть композитор.
Контроллер:
/**
* Private variables
*/
private $controller = "";
private $action = "";
private $arrayCookie = "";
public function __construct(Route $route)
{
/**
* Middlewares
*/
$this->middleware('auth');
$this->middleware('cookies');
$this->middleware(function ($request, $next) {
$userToken = Auth::user()->token;
$this->arrayCookie = $request->$userToken;
return $next($request);
});
/**
* Extracting current controller & action from the namespace
*/
list($controller, $method) = @explode("@", $route->getActionName());
/**
* Assigning values to private variables
*/
$this->controller = preg_replace('/.*\\\/', '', $controller);
$this->action = preg_replace('/.*\\\/', '', $method);
}
public function <method>()
{
...
# rendering view
return view(self::DIRECTORY . "create", [
...
**'arrayCookie' => $this->arrayCookie,**
...
]);
...
}
...
Просмотр:
...
<div id="main"<?php
# fetching cookie -> sidebar-floating
if(!empty($arrayCookie['sidebar-floating']) && $arrayCookie['sidebar-floating'] == true)
{
echo ' class="sidebar-floating"';
}
?>>
...