Я не думаю, что это хорошая практика для проверки идентификатора в файле маршрута для перенаправления на разные контроллеры, и почему:
Вы отправите запрос на эту конечную точку и отправьте идентификатор ,
, и с этими тремя вопросами вы получите проверки + перенаправление к различным методам и если это идентификатор интереса к запросу базы данных, у вас также будет код базы данных.
Обычная процедура, которую мне нравится думать, когда она попадает на маршрут, должна ударить по авторизации и аутентификации (промежуточное ПО, как сказал Bak87). В этом случае вы можете проверить, проверен ли он, если он является определенным пользователем, независимо от того, что вы хотите.
После этой начальной проверки вы можете перенаправить его на определенный метод на определенном контроллере в зависимости от ваших потребностей , однако я бы не советовал, поскольку класс должен иметь единую цель в соответствии с некоторыми стандартами (но, в конце концов, вы можете создать приложение, как вы этого хотите).
Я считаю, что маршрут или группа маршрутов должна иметь промежуточное ПО (для любой первичной проверки, которую вы требуете от человека, делающего запрос), и каждый маршрут должен указывать на один метод в контроллере. Как только он достигнет контроллера, вместо того, чтобы иметь (Request $ request) в качестве параметров для метода, вы можете создать свой собственный FormRequest, где вы можете проверить идентификатор, если хотите.
Если FormRequest не интересует, вы можете использовать Eloquent (если идентификатор, который вы ищете, связан с ним) FindOrFail
, чтобы проверить, существует ли он (если он этого не делает, возвращает ошибку 404 не найдена, если у вас есть 404.blade.php файл). Таким образом, к моменту, когда он достигнет метода контроллера, он был проверен разделами, где маршруты затем защищаются основной авторизацией и аутентификацией FormRequest, чтобы выполнить проверку ввода, и вы можете специально вернуть все, что захотите, с помощью контроллера метод.
Очевидно, что мы не знаем, каково мнение вашего возвращения, но если оно слегка отличается друг от друга, подумайте о его рефакторинге, чтобы вернуть только 1 вид, состоящий из других клинков
Вы можете использовать модификатор g
в конце регулярного выражения для замены всех вхождений сопоставления с образцом.
{one:"1",two:"2",three:"3",one:"one",plz:"nope"}
Я хочу заменить все после one
на "42"
. Без глобального модификатора я получаю такой результат:
$ sed -E 's/one:[^,]+/one:"42"/' foo.txt
{one:"42",two:"2",three:"3",one:"one",plz:"nope"}
Обратите внимание, что второй экземпляр one:
не изменился. Теперь с модификатором g
:
$ sed -E 's/one:[^,]+/one:"42"/g' foo.txt
{one:"42",two:"2",three:"3",one:"42",yas:"nope"}
, который заменяет все вхождения.
Вставьте это в файл, который может называться replacer.sh
:
#!/usr/bin/env bash
# declare `swap` to be an associative array
declare -A swap
swap[appVersion]='"1.4-beta"'
swap[buildNr]='"20190118.1"'
swap[production]="!"
swap[tracking]="!0"
swap[apiHost]='"\/api-2\/"'
swap[foo]='"bar"'
FILE=$1
for key in ${!swap[@]}; do sed -E -i 'bak' "s/${key}:[^,]+/${key}:${swap[${key}]}/g" $FILE; done
Измените ключи и значения в переменной swap
так, чтобы вам было нужно. Дело имеет значение, и избежать каких-либо обратной косой черты в ценностях.
Если вам нужно заменить больше вещей, вы можете просто добавить больше пар ключ / значение. Цикл будет перебирать все ключи, применяя изменения по порядку.
sed
может автоматически создавать файлы резервных копий с флагом -i
; Я думаю, что они могут сорваться во время каждой итерации цикла - будьте осторожны.
Запустите программу так: $ ./replacer.sh filename.js
Надеюсь, это поможет!