Добавить необязательный параметр в базовый маршрут в Laravel

Я пытаюсь добавить необязательный параметр в мой домашний маршрут, который

Route::get('/{selectDate?}', [
"as" => "/",
"uses" => "PublicController@index"]);

и моя функция индекса похожа

public function index($date = null)
{
if($date!=null){
//some line of codes
}

}

и я запускаю необязательный параметр с помощью списка выбора на функцию изменения, которая

$(function() {
$('#selectDate').on('change', function() {
window.location.href = '{{route("/")}}' + "/" + this.value;
});
});

Теперь проблема в том, что когда я нажимаю любую другую ссылку с домашней страницы, они все идут в индексной функции, а не в собственных написанных функциях.
Нужна помощь по этому вопросу.

0

Решение

Любая строка будет соответствовать необязательному параметру, есть 2 варианта решения этой проблемы.

Вы могли бы поставить этот маршрут в нижней части вашего web.php файл маршрута, маршруты будут сопоставляться на основе «первым пришел — первым обслужен», поэтому он будет проходить по этому маршруту только в том случае, если другой маршрут не будет соответствовать данному URL.

Второй вариант — использование регулярного выражения для определения необязательного параметра, для которого можно найти дополнительную информацию. Вот.
Короче говоря, вы можете использовать

Route::get('/{selectDate?}', [
"as" => "/",
"uses" => "PublicController@index"])->where('selectDate', '/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/');

После этого selectDate должен всегда соответствовать шаблону как 01-01-2000,
регулярное выражение не проверено и скопировано из этот Так ответь

1

Другие решения

В таких случаях вы должны проверить параметр маршрута, используя Ограничения регулярных выражений лайк:

Route::get('{user_tipe}/event', 'admin\EventC@index')->where('user_tipe', 'admin');

где маршрут будет соответствовать admin и если он совпадает, то конкретный маршрут будет работать, иначе нет.

1

По вопросам рекламы [email protected]