如何在Laravel 5.2中将表单数据作为路由参数传递

时间:2017-02-16 12:39:37

标签: php laravel model-view-controller

我想使用两个字段的表单中只有一个字段的值作为控制器的路由参数。到目前为止我所获得的只是在网址上附加了一堆查询字符串参数。

我的表格:

{{ Form::open(['route' => ['anuncio.especificar_tipo_imovel', $valorCep = 'valorCEp'],  'method' => 'GET']) }}
    <input type="hidden" value="14405024" id="valorCep" name="valorCep"/>
    <label for="tbCep"/>
        <input autocomplete="off" id="tbCep" style="width:400px;" name="cep" type="text" />
    </label>
    <input type="submit" value="continuar">
{{ Form::close() }}

我有这样的路线:

Route::get('anuncio/especificar_tipo_imovel/{valorCep}', [
    'as' => 'anuncio.especificar_tipo_imovel',
    'uses' => 'AnuncioController@especificar_tipo_imovel'
]);

和这样的动作方法

public function especificar_tipo_imovel(Request $request, $valorCep)
{  
   return view('especificar_tipo_imovel');
}

我想发送的值是隐藏字段的值:valorCep 我想要一个网址     http://my_route/34834839 数字是隐藏字段的值和$valorCep路由参数。

我的网址是这样的:

http://my_route/valorCEp?valorCep=14405024&cep=Rua++jardim+pedreiras14405024

3 个答案:

答案 0 :(得分:2)

请注意,您在视图中使用文字“valorCep”分配$valorCep。你应该从你的控制器传递它。

public function especificar_tipo_imovel(Request $request, $valorCep)
{
    return view('especificar_tipo_imovel', ['valorCep' => $valorCep]);
}

并在您看来:

{{ Form::open(['route' => ['anuncio.especificar_tipo_imovel', $valorCep],  'method' => 'GET']) }}

答案 1 :(得分:0)

您可以使用此

public function especificar_tipo_imovel(Request $request, $cep)
{
    $valorCep = $request->valorCep;

    return view('especificar_tipo_imovel', ['valorCep' => $valorCep]);
}

答案 2 :(得分:0)

您无法将隐藏输入的值传递给路径,例如$valorCep = 'valorCEp',这样您只需传递字符串&#39; valorCEp&#39; 作为参数。检查你的网址,参数是字符串的路由,加上输入的值(导致GET方法)。

除非你在变量中有valorCep输入的值,否则传递这个变量而不是&#39; valorCEp&#39;字符串,你需要一些JavaScript。像这样:

脚本(使用jQuery)

$('input[type=submit]').on('click', function(event){
    event.preventDefault();
    var valorCep = $('#valorCep').val();
    $('form').attr('action', 'anuncio/especificar_tipo_imovel/'+valorCep);
    $('form').submit();
});