【问题标题】:How to pass form data as route parameters in Laravel 5.2如何在 Laravel 5.2 中将表单数据作为路由参数传递
【发布时间】:2017-07-05 13:57:53
【问题描述】:

我想使用一个表单中只有一个字段的值和两个字段作为控制器的路由参数。到目前为止,我实现的只是附加到 url 的一堆查询字符串参数。

我的表格:

{{ 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

【问题讨论】:

  • $xxxx=$request->valorCep;你可以这样使用
  • 我的问题是没有在控制器中获取值。我的问题是 url 格式。
  • 抱歉,没有得到您想要的??
  • 我的问题的最后一行在我提交表单时显示我的网址。我想要一个以这种方式格式化的 url my_route/valorCep.I 只看到人们通过直接输入 url 来使用路由参数,我想知道如何以编程方式传递参数。我想要一个类似于 stackoverflow 的 url :)。

标签: php laravel model-view-controller


【解决方案1】:

你可以用这个

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

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

【讨论】:

    【解决方案2】:

    您不能像$valorCep = 'valorCEp' 那样将隐藏输入的值传递给路由,那样您只是将字符串 'valorCEp' 作为参数传递。检查你的 url,参数是字符串的路由,加上输入的值(导致 GET 方法)。

    除非您在变量中输入 valorCep 的值,并通过此变量而不是 'valorCEp' 字符串,否则您将需要一些 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();
    });
    

    【讨论】:

    • 这不起作用,输入的值被发送
    【解决方案3】:

    请注意,您在视图中使用文字“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']) }}
    

    【讨论】:

    • 我知道使用文字'valorCep'我不会得到任何动态路由。我只是用它来显示我卡在哪里以及我正在尝试做什么。
    • 好的,我想我明白您现在在尝试什么,您可以通过将查询参数作为键值对传递来创建路由。看:['route' =&gt; ['anuncio.especificar_tipo_imovel', 'valorCep' =&gt; $valorCep, 'cep' =&gt; $cep]] 但是,您应该断言查询和路由参数名称之间没有名称冲突。
    猜你喜欢
    • 2017-01-13
    • 2016-05-16
    • 1970-01-01
    • 2017-01-30
    • 2017-01-22
    • 2018-06-05
    • 2023-03-07
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多