В моем контроллере входа в систему есть жестко запрограммированная строка URL-адреса, которая устанавливает, куда перенаправить после входа пользователя в систему. Я пытаюсь сделать это динамическим, получая маршрут по имени:
protected $redirectTo = '/home';
Обновлено:
protected $redirectTo = route('home');
Однако приведенное выше дает следующую ошибку:
FatalErrorException (E_UNKNOWN) Constant expression contains invalid operations
Можно ли получить URL-адрес маршрута по его имени?






Ты можешь использовать
request()->route()->getName()
Чтобы получить URL-адрес, который вы должны использовать
request()->url()
И путь
request()->path()
Текущий метод маршрута
request->route()->getActionMethod()
В случае redirectTo вы можете переопределить функцию:
protected function redirectTo() {
return route('foo.bar');
}
Вы должны определить маршрут с именем home
как это:
Route::get('/home', 'HomeController@index')->name('home');
или Route::get('/home', ['as' => 'home', 'uses' => 'HomeController@index']);
Другой способ получить url маршрута
$route_url = \Request::route()->getURLByName("name of the route");
Ваша проблема в том, что вам не разрешено использовать вызов функции при объявлении свойства в вашем классе. Вы должны использовать конструктор вашего контроллера, чтобы установить его:
class LoginController extends Controller
{
protected $redirectTo = '/home';
public function __construct()
{
$this->middleware('guest')->except('logout');
$this->redirectTo = route('home');
}
}
В качестве альтернативы вы можете определить метод redirectTo, который возвращает местоположение, в которое вы хотите, чтобы пользователь был перенаправлен после успешного входа в систему. Затем вы можете полностью удалить свойство $redirectTo:
class LoginController extends Controller
{
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function redirectTo()
{
return route('home');
}
}
protected $redirectTo = route('home');
Вы не можете назначить функцию свойству. Вот почему вы получаете эту ошибку.
вы можете сделать это в своем конструкторе, например
public function __construct(){
$this->redirectTo = route('home')
}
Это способ, который я использую, и он будет работать с вами. Просто поместите эту функцию в свой LoginController, чтобы переопределить функцию аутентификации.
protected function authenticated(Request $request, $user)
{
return redirect()->route('your_route_name');
}