Laravel:表单按钮,名称未显示在var_dump中

时间:2014-05-21 14:32:06

标签: php laravel laravel-4

我有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() }}

但我在输出中看到的只是表单标记而没有别的。

2 个答案:

答案 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