我正在制作一个带有选择选项的页面。 如果我选择一个选项,然后单击一个按钮。它将使用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>
答案 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规则,然后返回不同的视图。