Параметр маршрута Laravel в файле маршрута web.php

На самом деле, версии стандарта C ++ до того, как C ++ 11 определили ключевое слово «export», [] , можно просто объявить шаблоны в файле заголовка и реализовать их в другом месте.

К сожалению, ни один из популярных компиляторов не реализовал это ключевое слово. Единственный, о котором я знаю, - это интерфейс, написанный Edison Design Group, который используется компилятором Comeau C ++. Все остальные настаивали на том, что вы пишете шаблоны в заголовочных файлах, нуждающихся в определении кода для надлежащего создания экземпляра (как уже указывали другие).

В результате стандартная комиссия ISO C ++ решила удалить export особенность шаблонов, начинающихся с C ++ 11.

0
задан Victordb 13 July 2018 в 17:27
поделиться

3 ответа

Я думаю, что лучшее, что вы можете сделать, это Middleware, например:

public function handle($request, Closure $next)
{
    if ($request->id == 'some_value') {
        redirect action('ControllerA@methodA');
    }
    else {
      redirect action('ControllerB@methodB');
    }

    return $next($request);
}
0
ответ дан Bak87 17 August 2018 в 12:20
поделиться
  • 1
    Как вы думаете, что лучше: ваше решение или выполнение только одного маршрута и проверка состояния в контроллере и возврат одобренного представления? Оба работают для меня, я хотел бы узнать, какой из них лучше. – Victordb 13 July 2018 в 21:36
  • 2
    Я думаю, что это зависит от того, насколько различна логика, если вы выполняете тестирование A / B, я думаю, что лучше ваше решение. Поэтому, если в логике нет существенных изменений для создания нового контроллера, просто покажите соответствующее представление в соответствии с условием @Victordb – Bak87 13 July 2018 в 21:41

Я не думаю, что это хорошая практика для проверки идентификатора в файле маршрута для перенаправления на разные контроллеры, и почему:

Вы отправите запрос на эту конечную точку и отправьте идентификатор ,

  1. Является ли этот идентификатор действительным? Откуда вы знаете?
  2. Является ли ID целым числом или строкой?
  3. Существует ли идентификатор в запросе?

, и с этими тремя вопросами вы получите проверки + перенаправление к различным методам и если это идентификатор интереса к запросу базы данных, у вас также будет код базы данных.

Обычная процедура, которую мне нравится думать, когда она попадает на маршрут, должна ударить по авторизации и аутентификации (промежуточное ПО, как сказал Bak87). В этом случае вы можете проверить, проверен ли он, если он является определенным пользователем, независимо от того, что вы хотите.

После этой начальной проверки вы можете перенаправить его на определенный метод на определенном контроллере в зависимости от ваших потребностей , однако я бы не советовал, поскольку класс должен иметь единую цель в соответствии с некоторыми стандартами (но, в конце концов, вы можете создать приложение, как вы этого хотите).

Я считаю, что маршрут или группа маршрутов должна иметь промежуточное ПО (для любой первичной проверки, которую вы требуете от человека, делающего запрос), и каждый маршрут должен указывать на один метод в контроллере. Как только он достигнет контроллера, вместо того, чтобы иметь (Request $ request) в качестве параметров для метода, вы можете создать свой собственный FormRequest, где вы можете проверить идентификатор, если хотите.

Если FormRequest не интересует, вы можете использовать Eloquent (если идентификатор, который вы ищете, связан с ним) FindOrFail, чтобы проверить, существует ли он (если он этого не делает, возвращает ошибку 404 не найдена, если у вас есть 404.blade.php файл). Таким образом, к моменту, когда он достигнет метода контроллера, он был проверен разделами, где маршруты затем защищаются основной авторизацией и аутентификацией FormRequest, чтобы выполнить проверку ввода, и вы можете специально вернуть все, что захотите, с помощью контроллера метод.

Очевидно, что мы не знаем, каково мнение вашего возвращения, но если оно слегка отличается друг от друга, подумайте о его рефакторинге, чтобы вернуть только 1 вид, состоящий из других клинков

0
ответ дан abr 17 August 2018 в 12:20
поделиться

Проверяйте документы, лично я никогда не делал if внутри моей папки маршрутов, кроме того, очень опасно практиковать такие вещи, чтобы все происходило в представлениях, если вы испортились с пользователем, зарегистрированным в или нет, сделайте auth::check() или что-то в этом роде, но никогда не играйте с маршрутами web.php, чтобы обеспечить безопасность в вашем приложении, все остальное сделано на контроллерах и представлениях.

1
ответ дан Daniel Logvin 17 August 2018 в 12:20
поделиться
  • 1
    Я закончил делать только один маршрут, проверил состояние внутри контроллера и вернул соответствующее представление. Спасибо. – Victordb 13 July 2018 в 17:56
Другие вопросы по тегам:

Похожие вопросы: