我有2个按钮,其名称既不会显示在表单提交中的var_dump($_POST)
或print_r($_POST)
,也会让我真的很困惑,为什么会发生这种情况。这是Laravel中的一个错误还是我错过了什么?我使用的是最新的Laravel版本。
这是我的代码:
{{ Form::open( array( 'id' => 'list-form', 'method' => 'POST', 'route' => 'user.admin.list' ) ) }}
{{ Form::button( 'Show List', array( 'type' => 'submit', 'name' => 'what', 'class' => 'btn btn-success' ) ) }}
{{ Form::button( 'Email List', array( 'type' => 'submit', 'name' => 'email_list', 'class' => 'btn btn-primary' ) ) }}
{{ Form::close() }}
感谢您的帮助!
修改
我还试图做以下事情:
{{ Form::open( array( 'id' => 'list-form', 'method' => 'POST', 'route' => 'user.admin.list' ) ) }}
<input type="submit" value="Show List" name="show_list">
<input type="submit" value="Email List" name="email_list">
{{ Form::close() }}
但我在输出中看到的只是表单标记而没有别的。
答案 0 :(得分:2)
您正在使用Form :: button(),但应该使用Form :: submit()。我刚用两条路线复制了你的表格:
Route::any('form', ['as' => 'test', function()
{
return
// This one works
//
Form::open( array( 'id' => 'list-form', 'method' => 'POST', 'route' => 'user.admin.list' ) ) .
' <input type="submit" value="Show List" name="show_list">' .
'<input type="submit" value="Email List" name="email_list">' .
Form::close() .
// This one too
//
Form::open( array( 'id' => 'list-form', 'method' => 'POST', 'route' => 'user.admin.list' ) ) .
Form::submit( 'Show List', array( 'type' => 'submit', 'name' => 'show_list', 'class' => 'btn btn-success' ) ) .
Form::submit( 'Email List', array( 'type' => 'submit', 'name' => 'email_list', 'class' => 'btn btn-primary' ) ) .
Form::close() .
// This one doesn't
//
Form::open( array( 'id' => 'list-form', 'method' => 'POST', 'route' => 'user.admin.list' ) ) .
Form::button( 'Show List', array( 'type' => 'submit', 'name' => 'show_list', 'class' => 'btn btn-success' ) ) .
Form::button( 'Email List', array( 'type' => 'submit', 'name' => 'email_list', 'class' => 'btn btn-primary' ) ) .
Form::close() ;
}]);
Route::any('adminlist', ['as' => 'user.admin.list', function()
{
dd(Input::all());
}]);
在前2位你必须收到类似的内容:
array(2) {
["_token"] "TXlMuBczj4OmMEjOlkxusEhpUUZPBTqxQZHch2X2"
["email_list"] "Email List"
}
另外,你可以在Laravel中使用$ _POST和$ _GET,但还有更好的方法:
Input::get('email_list');
如果它在您自己的代码中不起作用,则可能会破坏HTML标记或发生Javascript冲突。尝试使用完整的原始HTML代码进行调试。
答案 1 :(得分:-2)
按钮不是HTML表单的一部分,不会发送到服务器。
用两个按钮确定你在这里要做什么。
如果您想要一个值,则必须将该值添加到$options
数组中。但话又说回来,这些多个按钮有什么意义呢?
来自规范:
与按钮关联的表单元素(其表单所有者)。 属性的值必须是a的id属性 同一文件中的元素。如果未指定此属性,则 element必须是表单元素的后代。这个 属性使您可以将元素放在a中的任何位置 文件,而不仅仅是其元素的后代。
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button