В вашей настройке example.show
- это маршрут с префиксом {workspace}
.
{workspace}
- это динамически определенный параметр маршрута, поэтому Laravel не может понять, что это такое - вам нужно определить его, когда вы попытаетесь сгенерировать маршрут.
Так, например, если мое рабочее пространство «богатое», {{route(example.show)}}
станет:
{{ route(example.show, ['workspace' => 'rich']) }}
Документация Laravel по именованным маршрутам содержит краткий пример.
Редактировать
Если вы решили использовать функцию `route () 'для генерации ваших URL-адресов в ваших блейд-файлах, и у вас есть общий параметр маршрута, который необходимо определять на регулярной основе, я бы подумал написать помощника функция, чтобы сделать это проще. Так что вместо:
{{ route(example.show, ['workspace' => 'rich']) }}
Это может стать:
{{ MyHelperClass::generateWorkspaceRoute('example.show') }}
А затем в вашем файле вспомогательного класса:
public function generateWorkspaceRoute($routeName)
{
$workspace = $this->getWorkspace();
return route($routeName, ['workspace' => $workspace]);
}
private function getWorkspace()
{
// Your logic to determine workspace here.
// If it is possible that we are generating this without an
// authenticated user, then provide a fallback...
return \Auth::check() ? \Auth::user()->workspace : 'workspace';
}
Затем вы можете найти свой запасной вариант в контроллере и перенаправить
аутентифицированному пользователю в правильное рабочее пространство:
// in SomeController
public function show($workspace)
{
if($workspace === 'workspace') {
// Because our controller is behind the 'auth' middleware,
// we should now be able to generate a correct workspace route
return redirect(MyHelperClass::generateWorkspaceRoute('example.show'));
}
// Normal controller logic continues from here...
}
Примечание: это требует знания того, каким будет ваше «резервное» рабочее пространство во время его генерации для каждого пользователя - если вы разрешаете своим пользователям определять это, вам нужно будет запретить им выбрав свой запасной вариант в качестве опции.