Laravel:在表单的url中添加查询参数?

时间:2014-02-12 13:11:13

标签: php forms laravel

打开一个提交给特定网址的表单非常容易:

echo Form::model($model, array('route' => array('user', $user->id)))

这将呈现如下内容:

<form action="/user/1">

我想:

<form action="/user/1?q=54">

换句话说,如何更改表单方法以支持添加查询参数,在本例中称为“q”?

一种更简单的问题是:有没有办法使用Route生成URL以包含查询参数?

2 个答案:

答案 0 :(得分:2)

不幸的是,我在这个问题上找到的唯一答案是将变量附加到URL上,如下所示:

echo Form::model($model, array('route' => array('user', $user->id.'?q=54')))

虽然为什么不直接使用SEO友好参数?所以它会像

一样出现
<form action="/user/1/54">

您还可以使用带参数的路线制作您的网址,但是您希望它们看起来如此(我假设代码中的Q代表问题:

Route::post('user/{id}/q/{q_id}', 'UserController@postQuestion');

或者

Route::post('user/{id}/question/{q_id}', 'UserController@postQuestion');

答案 1 :(得分:0)

有同样的问题,通过在表单中​​添加隐藏字段并从控制器调用它来解决。

{{ Form::hidden('_test', 'tags') }}

在控制器中一定要设置:

public function update($id)
{
    $test= Input::get('_test', 'default');
    $input = array_except(Input::all(), '_method', '_test');
    // prevent from updating an inexistent field
...

无法评论@史蒂夫的答案限制原因,将在此处更新:

它不起作用,因为“Form :: model”将处理“HTML :: entities()”中的值,所以

$id . "?test"

将会是

1%3Ftest