Laravel表单操作参数

3
我正在尝试从表单对象调用控制器方法,以增加给定项。问题在于添加参数时,表单操作将添加一个问号,而不是斜杠。
<form method="POST" action="http://localhost/admin/pages?1">

我该如何定义参数?

{!! Form::open([
    'action'=>['Admin\\PagesController@increment', $item->id],
    'style' => 'display:inline'
]) !!}
    {!! Form::submit('Move Up', ['class' => 'btn btn-danger btn-xs']) !!}
{!! Form::close() !!}

你尝试过 Admin\PagesController@increment 吗? - user2094178
2个回答

5
在您的代码示例中,您正在将项ID作为HTTP GET参数发送。您可以通过给参数命名来访问控制器中的项ID,如下所示。
{!! Form::open([
    'action'=>['Admin\\PagesController@increment','itemId='.$item->id],
    'style' => 'display:inline'
]) !!}

然后在你的控制器中通过访问项目 id

Input:get('itemId')

使用第一种选项会出现以下错误:Action App\Http\Controllers/admin/pages/<?php echo e($item->id); ?> 未定义第二个选项会给我一个 ErrorException: Array to string conversion 的错误 - Zalon
1
@Zalon,看起来你不能使用POST请求传递参数。所以你需要选择第二种方法。我已经编辑了代码。请参考这个答案: https://dev59.com/IY3da4cB1Zd3GeqP5dhE#31873302 - madawa
我稍微尝试了一下,最终通过使用'url' => ['admin/pages/'.$item->id.'/increment']而不是'action'使其正常工作。非常感谢您的帮助。 - Zalon

0

你的函数应该长这样

public function increment($id) 
    {
        //your code;
    }

而且您的路由应该在post请求中带有id

Route::post('increment/{id}','PagesController@increment');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接