Как я могу направить параметры строки запроса в Laravel

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

   '/producto' =>  ProductoController@index
   '/producto?id=16' => ProductoController@destalle

Я знаю, что это может быть сделано с помощью дружественных URL-адресов, таких как: '/ product / id', но я хочу знать, может ли Laravel изначально контролировать этот тип маршрутизации, чтобы не делать все это в контроллере и с этого момента начинать маршрутизацию.

2
задан 08.06.2016, 17:56
2 ответа

Ты можешь делать это добавляя параметры к маршруту, однако рекомендуемо писать сначала ту, которая получает параметр:

Route::get('producto?id={id}', 'ProductoController@detalle');
Route::get('producto', 'ProductoController@index');

Лучший выбор для первой линии, понимая, что метод в твоем драйвере использовал вставку зависимостей, состоял бы в том, чтобы перемещать модель прямо, из этой формы ты не будешь должен делать добавочные консультации и поддерживать 'чистый' драйвер:

Route::get('producto/{product}', 'ProductoController@detalle');

Это понимает, что твоя модель называется Product и которому сделали инъекцию в метод detalle.

Вся информация находится в документации Laravel: https://laravel.com / docs / степень магистра / routing

2
ответ дан 24.11.2019, 14:13
  • 1
    я попробовал форму, которую ты показываешь мне: Route::get('producto?id={id}', 'ProductoController@detalle'); и оно не функционирует, как ждут, что отпускают Route:: get (и #39; продукт и # 39; и #39; ProductoController@index и # 39;); и покажи контент этой –  Victor Rojas Centeno 07.06.2016, 20:55
  • 2
    И cu и # 225; l - результат? –  Shaz 07.06.2016, 20:58
  • 3
    Route:: get (и #39; продукт? пойдите = {пойдите} и #39; function () {я начинаю " здесь с id";}); Route:: get (и #39; продукт и # 39; function () {я начинаю " здесь solo";}); появляется текст " здесь solo" @Shaz –  Victor Rojas Centeno 07.06.2016, 21:00
  • 4
    Я понимаю, что это означает, что ты пробовал с id, и я появлялся и # 243; текст вторая l и # 237; nea? –  Shaz 07.06.2016, 21:12
  • 5
    @VictorRojasCenteno правда, что вопросы он не имеет смысл. query string - это, чтобы показывать пару и # 225; метры в унифицированном указателе ресурса. B и # 225; sicamente, что est и # 225; s делая состоит в том, чтобы иметь сама унифицированный указатель ресурса mapeada два раза, под чем framework понимает отличные вещи. М и # 225; s добро, обязанность и # 237; схвати иметь 1 тот же маршрут и позволять, чтобы драйвер определил основано на стоимости твоего query string, реализовывать redirecci и # 243; n или что-то сходное. –   08.06.2016, 17:39

то, что я сделал бы: mismaruta / { пойдите? } и в controller я говорю ему, существует ли идентификация, делаю что-то, если он не существует, делаю другую вещь! с (?) я говорю ему, что параметр опциональный.

1
ответ дан 24.11.2019, 14:13
  • 1
    Желанный в сайт @JuanCarlos. Пожалуйста добавь м и # 225; s деталь в ответе, quiz и # 225; s немного c и # 243; я говорю, так что м и # 225; s пользователи смогли извлекать пользу из твоего explicaci и # 243; n. –   07.06.2016, 23:18
  • 2
    Я соглашаюсь с soluci и # 243; n, но то, что я желаю, состоит в том, чтобы смогли enrutar не посредством url дружеские, если не из-за пары и # 225; метры query string, спасибо за помощь @juan-carlos-gonzales-q –  Victor Rojas Centeno 08.06.2016, 01:26

Теги

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