Для пояснения: код, который вы пишете в своих представлениях, является HTML.Если вы используете {{...}}
, то код в фигурных скобках сначала проверяется в php.Все это происходит на вашем сервере.Переменная $ColumnType
не существует, когда это происходит (и не позднее).Пользователь даже не видел ваш сайт, когда ваш сервер пытается узнать, каково значение переменной.
Чтобы отправить данные от пользователя на ваш контроллер, я предлагаю использовать форму:
<form action="{{route('trend')}}" method="POST">
<select class="selectsector" id="ColumnType" name="ColumnType">
<option value=""> Select something </option>
<option value="option1">option1</option>
<option value="option2">option2</option>
</select>
<input type="submit"></input>
</form>
Когда форма отправлена, браузер автоматически отправит запрос с параметром ColumnType
вашему контроллеру.Если вы хотите использовать POST, измените определение маршрута на Route::post
.Вы можете получить доступ к значению параметра следующим образом:
public function TrendFilter(Request $request)
{
$selectedOption = $request->input('ColumnType');
}
РЕДАКТИРОВАТЬ Адресация к вашим комментариям:
Если вы используете подход POST, вам не понадобится{ColumnType}
-путь в URL.Выбранный параметр передается через запрос и не отображается в URL.
Если вам нужны параметры в URL (это может быть полезно, если вы хотите поделиться сайтом, указав URL),затем используйте GET.Ваш браузер добавит выбранные параметры в качестве параметров к URL-адресу.Например:
?options=option1
В обоих случаях вы можете получить доступ к выбранной опции в вашем контроллере, как я описал выше.
Вы получаете ошибку «Route Not Found», потому что функция route( name )
принимает имя маршрута в качестве аргумента.В вашем случае это будет trend
, установленное 'as' в вашем определении маршрута.
Также обратите внимание, что вам, вероятно, понадобится второй обработчик в вашем контроллере, чтобы принять обратную связь формы и выполнитьзапрос.Затем вы можете перенаправить на предыдущую страницу (тот же вид) с обновленными значениями (data
) и сохранить выбранные параметры (withInput()
).
public function acceptForm(Request $request){
$selectedOption = $request->input('ColumnType');
data = doQuery($selectedOption)...
return redirect()->back()->with(data)->withInput();
}