Маршруты laravel с переменной

Здравствуйте, это мой контроллер:

public function getValues(Request $request){
    $typ=$request->get('typ');
    $stellentyp=$request->get('stellentyp');
    $bereich=$request->get('bereich');
    $view = 'user.'.$stellentyp;
    return view($view,['typ' => $typ, 'stellentyp', $stellentyp, 'bereich', $bereich]);
}

Я хочу, чтобы пользователь мог выбрать «stellentyp», а затем отобразить представление с этим «stellentyp».

Но у меня проблема с моими маршрутами, они не знают переменную "stellentyp". Как я могу связать свой контроллер с моими маршрутами?

Я пробовал это

Route::post('user/{$stellentyp}', 'StartController@getValues')->name('user.{$stellentyp}');

но не работает :(. Ошибка:

Missing required parameters for [Route: user] [URI: user/{$stellentyp}]. (View: C:\xampp\htdocs\j4ylara\resources\views\user\start.blade.php)

Отсутствуют обязательные параметры для [Маршрут: пользователь] [URI: пользователь / {$ stellentyp}]. (Просмотр: C: \ xampp \ htdocs \ j4ylara \ resources \ views \ user \ start.blade.php‌) это ошибка

MonaMuhr 28.08.2018 13:30

Вы можете прочитать laravel.com/docs/5.6/routing#route-parameters

brombeer 28.08.2018 13:33

Убедитесь, что вы все написали в вопросе, а не в комментариях. Вы можете редактировать уже опубликованный вопрос.

Nic3500 28.08.2018 14:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
1 280
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Route::post('user/{stellentyp}', 'StartController@getValues')->name('user.values');

Чтобы добавить переменную внутри пути маршрута, вам не нужно использовать сигнал доллара для ее объявления. Проверьте код выше. Также имя маршрута не нужно назначать динамически.

в маршрутах laravel вам не нужен знак $ для переменной , удалите знак $ и снова проверьте свой маршрут, он должен работать ...

Route::post('user/{stellentyp}', 'StartController@getValues')->name('user.stellentyp');

и добавьте $ stellentype во ввод метода контроллера следующим образом:

public function getValues(Request $request,$stellentype)

Параметр маршрута полностью отличается от параметров POST.

когда вы отправляете параметр сообщения, он должен быть в вашей форме как поле ввода или выбора и т. д., тогда вы можете поймать их в контроллере с помощью метода get() из $ request (экземпляр класса Request)

public function getValues(Request $request){
    $request->get("post")
}

Но параметр маршрута не отправляется в форме, мы отправляем их следующим образом

в файле лезвия

<form action = "{{route("user.values",$user_id)}}">

в файле маршрута

Route::post('user/{id}', 'StartController@getValues')->name('user.{$stellentyp}');

и поймать их в контроллере как параметр функции

public function getValues(Request $request,$user_id){
    dd($user_id);
}

Я отправляю параметр post, перехватываю его в своем контроллере и сохраняю в переменной с именем $ stellentyp. и теперь я хочу, чтобы когда я выбирал "Stellentyp", он показывал мне это представление: www.test / $ stellentyp.com вот так, но я не знаю

MonaMuhr 28.08.2018 14:07

я должен передать параметр в моем контроллере или в моих маршрутах? потому что у меня есть поле выбора, и я хочу что-то фильтровать, поэтому я хочу сохранить его в переменных

MonaMuhr 28.08.2018 14:08

а где взять user_id? у меня нет этого

MonaMuhr 28.08.2018 14:09

@MonaMuhr, это просто пример, чувак, я думаю, что на вашем маршруте возникают проблемы. Насколько я знаю, laravel не поддерживает динамические имена маршрутов и все специальные символы в маршрутах .. ваш маршрут - Route::post('user/{$stellentyp}', 'StartController@getValues')->name('user.{$stellentyp}'); , но он должен быть похож на Route::post('user/{stellentyp}', 'StartController@getValues')->name('user.stellentyp');

Teoman Tıngır 28.08.2018 14:12
Ответ принят как подходящий

я понял: D

<form action = "{{ action('StartController@getValues') }}" method = "post" id = "postData">
{{ csrf_field() }}
<select name = "stellentyp">
    <option value = "praktika">Praktika</option>
    <option value = "fwd">Freiwilligendienste</option>
    <option value = "jobs">Ferien- und/oder Nebenjobs</option>
</select>
<button type = "submit">Jetzt finden</button>

это мой blade.php

и мой контроллер такой же, и мои маршруты выглядят так

Route::resource('user/start', 'StartController');
Route::post('user/angebote', 'StartController@getValues');

Маршрут : -

Route::post('user/{stellentyp}', 'StartController@getValues');

Контроллер: -

public function getValues(Request $request,$stellentyp=''){
 $typ=$request->get('typ');
 $stellentyp=$request->get('stellentyp');
 $bereich=$request->get('bereich');
 $view = 'user.'.$stellentyp;
 return view($view,['typ' => $typ, 'stellentyp', $stellentyp, 'bereich', $bereich]);
}

Используйте этот код, чтобы получить ожидаемый ответ.

Другие вопросы по теме