chelkaz
@chelkaz

Можно ли в роутере исключить параметр?

Как применить к первому чтобы он не учитывал параметр в id слово remove
Что то типа такого есть? ->name('upload.index')->where('id', ''!=, 'remove')
Пробывал регуляркой из доков, но не помогает. Там пример такой - ->where('id', '[0-9]+');
Я пробовал так: ->where('id', '![remove]'); и так: ->where('id', '[!remove]');
Может я не так регулярное вырожение делаю?

Route::get('/upload/{id}', 'AddController@Upload_index')->name('upload.index');
Route::get('/upload/remove', 'AddController@Upload_remove')->name('upload.remove');
  • Вопрос задан
  • 184 просмотра
Пригласить эксперта
Ответы на вопрос 3
@holfza
Может нужно:
Route::get('/upload/remove', 'AddController@Upload_remove')->name('upload.remove');

поставить выше чем:
Route::get('/upload/{id}', 'AddController@Upload_index')->name('upload.index');

Роуты обрабатываются сверху вниз.
Ответ написан
Комментировать
erniesto77
@erniesto77
oop, rb, py, php, js
такой вариант
Route::get('/upload/{id}', 'AddController@Upload_index')->where('id', '^(!remove$)')->name('upload.index');
Route::get('/upload/remove', 'AddController@Upload_remove')->name('upload.remove');
Ответ написан
@UnQuaiz
Неправильно ограничивать роут по тому что он не должен принимать.
Правильно - определить какие параметры он ДОЛЖЕН принимать. Потому что количество значений которые не должен принимать - может увеличиваться, и route не должен на них реагировать.

Поэтому:
Route::get('/upload/{id}', function(){
    return 'id integer';
})->where('id','[\d]+')
    ->name('upload.index');

Route::get('/upload/remove', function(){
    return 'remove';
})->name('upload.remove');


Если не работает - значит какой то роут раньше срабатывает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы