Laravel上的路线有误

时间:2018-09-12 02:21:59

标签: laravel laravel-5

我无法执行此路线...

我的控制器:

public function profissionais(Request $request, $id){
    $profissionais = Vinculo::where('unidade_id', '=', $id)->get();
    $profissionais = $id;
    return view('relatorios.profissionais', compact('profissionais'));
}

我的表格:

<form method="GET" action="{{route('relatorios.profissionais', 'id')}}">
    <select class="js-example-basic-single" name="id" required>
        @foreach($unidades as $unidade)
            <option value="{{$unidade->id}}">{{$unidade->descricao}}</option>
        @endforeach
    </select>
    <span class="input-group-btn">
        <button class="btn btn-primary" type="submit">Listar</button>
    </span>
</form>

web.php:

Route::get('/relatorios/profissionais/{id}', 'RelatorioController@profissionais')->name('relatorios.profissionais');

我喜欢这样的路线:/relatorios/profissionais/4(4是ID),数字4将是$id变量。

但是uri就像:relatorios/profissionais/id?id=4

有帮助吗?

2 个答案:

答案 0 :(得分:4)

路由助手的第二个参数应该是参数的值,而不是键。

{{route('relatorios.profissionais', 4)}}

现在,因为要从表单中设置此值,所以您需要使用请求输入而不是route参数,或者使用javascript通过对选择元素的change事件使用侦听器来修改表单操作。 / p>

您拥有/id的原因是因为'id'是第二个参数。您拥有?id=4的原因是因为它是一个表单值,而不是路由参数。


检索集合后,您还会立即覆盖$profissionais

    $profissionais = $id;

答案 1 :(得分:0)

您可以这样做:

Route::get('/relatorios/profissionais/{id?}', 'RelatorioController@profissionais')->name('relatorios.profissionais');