На самом деле, версии стандарта C ++ до того, как C ++ 11 определили ключевое слово «export», [] , можно просто объявить шаблоны в файле заголовка и реализовать их в другом месте.
К сожалению, ни один из популярных компиляторов не реализовал это ключевое слово. Единственный, о котором я знаю, - это интерфейс, написанный Edison Design Group, который используется компилятором Comeau C ++. Все остальные настаивали на том, что вы пишете шаблоны в заголовочных файлах, нуждающихся в определении кода для надлежащего создания экземпляра (как уже указывали другие).
В результате стандартная комиссия ISO C ++ решила удалить export
особенность шаблонов, начинающихся с C ++ 11.
Я думаю, что лучшее, что вы можете сделать, это Middleware, например:
public function handle($request, Closure $next)
{
if ($request->id == 'some_value') {
redirect action('ControllerA@methodA');
}
else {
redirect action('ControllerB@methodB');
}
return $next($request);
}
Я не думаю, что это хорошая практика для проверки идентификатора в файле маршрута для перенаправления на разные контроллеры, и почему:
Вы отправите запрос на эту конечную точку и отправьте идентификатор ,
, и с этими тремя вопросами вы получите проверки + перенаправление к различным методам и если это идентификатор интереса к запросу базы данных, у вас также будет код базы данных.
Обычная процедура, которую мне нравится думать, когда она попадает на маршрут, должна ударить по авторизации и аутентификации (промежуточное ПО, как сказал Bak87). В этом случае вы можете проверить, проверен ли он, если он является определенным пользователем, независимо от того, что вы хотите.
После этой начальной проверки вы можете перенаправить его на определенный метод на определенном контроллере в зависимости от ваших потребностей , однако я бы не советовал, поскольку класс должен иметь единую цель в соответствии с некоторыми стандартами (но, в конце концов, вы можете создать приложение, как вы этого хотите).
Я считаю, что маршрут или группа маршрутов должна иметь промежуточное ПО (для любой первичной проверки, которую вы требуете от человека, делающего запрос), и каждый маршрут должен указывать на один метод в контроллере. Как только он достигнет контроллера, вместо того, чтобы иметь (Request $ request) в качестве параметров для метода, вы можете создать свой собственный FormRequest, где вы можете проверить идентификатор, если хотите.
Если FormRequest не интересует, вы можете использовать Eloquent (если идентификатор, который вы ищете, связан с ним) FindOrFail
, чтобы проверить, существует ли он (если он этого не делает, возвращает ошибку 404 не найдена, если у вас есть 404.blade.php файл). Таким образом, к моменту, когда он достигнет метода контроллера, он был проверен разделами, где маршруты затем защищаются основной авторизацией и аутентификацией FormRequest, чтобы выполнить проверку ввода, и вы можете специально вернуть все, что захотите, с помощью контроллера метод.
Очевидно, что мы не знаем, каково мнение вашего возвращения, но если оно слегка отличается друг от друга, подумайте о его рефакторинге, чтобы вернуть только 1 вид, состоящий из других клинков
Проверяйте документы, лично я никогда не делал if
внутри моей папки маршрутов, кроме того, очень опасно практиковать такие вещи, чтобы все происходило в представлениях, если вы испортились с пользователем, зарегистрированным в или нет, сделайте auth::check()
или что-то в этом роде, но никогда не играйте с маршрутами web.php
, чтобы обеспечить безопасность в вашем приложении, все остальное сделано на контроллерах и представлениях.