Я пытаюсь добавить необязательный параметр в мой домашний маршрут, который
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;
});
});
Теперь проблема в том, что когда я нажимаю любую другую ссылку с домашней страницы, они все идут в индексной функции, а не в собственных написанных функциях.
Нужна помощь по этому вопросу.
Любая строка будет соответствовать необязательному параметру, есть 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
,
регулярное выражение не проверено и скопировано из этот Так ответь
В таких случаях вы должны проверить параметр маршрута, используя Ограничения регулярных выражений лайк:
Route::get('{user_tipe}/event', 'admin\EventC@index')->where('user_tipe', 'admin');
где маршрут будет соответствовать admin
и если он совпадает, то конкретный маршрут будет работать, иначе нет.