У меня есть приложение laravel 5.2 с мультиаутентификацией, в котором следующие охранники определены на config/auth.php
:
...
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
'user' => [
'driver' => 'session',
'provider' => 'user',
],
...
Итак, admin
и user
.
Проблема заключается в уровне представления, поскольку эти два зарегистрированных охранника имеют общие представления, например:
Hello {{Auth::guard('admin')->user()->name}}
В этом случае охранник жестко запрограммирован в представлении, чтобы всегда быть admin
(он выдает ошибку, когда залогиненный охранник равен user
), но, чтобы избежать необходимости делать еще один равный вид только для этого небольшого изменения, я хотел бы, чтобы он был динамическим, что-то вроде :
Hello {{Auth::guard(<LOGGEDIN GUARD>)->user()->name}}
PS: я знаю, что этого можно добиться, получив соответствующий сегмент URL-адреса, например: www.site.com/pt/user/dasboard
, который в этом случае будет сегментом 2, но таким образом приложение потеряет масштабируемость, поскольку в будущем соответствующий сегмент может быть другим ( 2 в примере выше)
getGuard()
и как это реализовано в областиauth
Laravel. Думайте, что это поможет вам двигаться в правильном направлении. - person camelCase   schedule 17.08.2016Auth::guard($this->getGuard())
вызываетMethod [getGuard] does not exist.
. Я предполагаю, что это функция 5.1, я также проверил stackoverflow.com/questions/35624561/ с тем же результатом - person Miguel   schedule 17.08.2016protected
, вы не можете использовать$this
для доступа к нему. Но вы можете получить доступ с помощью чего-то вродеAuth::guard(Auth::getGuard())
, но я не уверен. - person camelCase   schedule 17.08.2016...class 'Illuminate\Auth\SessionGuard' does not have a method 'getGuard'
- person Miguel   schedule 17.08.2016