laravel传递选择选项值以形成动作参数

时间:2019-01-08 03:56:12

标签: laravel

我正在制作一个带有选择选项的页面。 如果我选择一个选项,然后单击一个按钮。它将使用url中的参数转到该页面。

我想知道是否有任何简单的方法可以将categoryId作为参数插入到动作中?

<form method="GET" action="{{ route('routename', ['categoryId' => 1]) }}">
@foreach($categories as $category)
<select>
    <option value="1">{{ $category->name }}</option>
    <option value="2">{{ $category->name }}</option>
    <option value="3">{{ $category->name }}</option>
</select>
@endforeach

<button>Change</button>

</form>

1 个答案:

答案 0 :(得分:0)

您的路线过于具体

您应从路线中删除categoryId。相反,您应该将路由指向仅接受请求的控制器。然后您可以读取控制器中选择框的值,并根据所选选项将用户定向到视图。

您的视图:

<form method="GET" action="{{ route('routename') }}">
@csrf
<select name='selectOption'>
@foreach($categories as $category)
    <option value="{{ $category->id }}">{{ $category->name }}</option>
</select>
@endforeach

<button>Change</button>

</form>

您的路线:

Route::get('url', 'Controller@functionName')->name('routename');

您的控制器:

use Illuminate\Http\Request;
public function functionName(Request $request)
{

  $option = $request->selectOption;

  if($option == 1){
    CODE FOR OPTION 1 HERE
  }
}

这样,路由将不需要在URL中定义参数。相反,您可以将其作为参数传递给要在控制器中读取的请求。然后,您可以为每个选项设置if规则,然后返回不同的视图。