【问题标题】:Form submit doesn't work at all inside foreach loop表单提交在 foreach 循环中根本不起作用
【发布时间】:2021-02-13 22:32:14
【问题描述】:

按钮根本不做任何事情。如果我在每个

掌心

遇到了几个类似的主题,但没有一个完全有我正在寻找的任何解决方案。

html:

<table class="table table-hover">
    @foreach ($query as $x)
        <tr class="table-dark">
            <form method="post" action="{{ action('Controller@admin_changeinfo') }}" enctype="multipart/form-data">
                <input name="_token" type="hidden" value="{{ csrf_token() }}"/>

                <th scope="row">User#{{$x->user_id}}</th>
                <td>{{$x->name}}</td>

                <td>
                    <input name="target" type="hidden" value="{{$x->user_id}}"/>
                    <input name="name" type="hidden" value="{{$x->name}}"/>

                    <input name="email" type="text" class="form-control" 
                    id="admin_place_em" value="{{$x->email}}" placeholder="{{$x->email}}">
                </td>
                <td>
                    <select name="role" class="custom-select" id="admin_role_change">
                        <option selected="" value={{$x->role}}>{{$role_ar[$x->role]}}</option>
                        <option value="1" class="admin_role_opt">Value 1</option>
                        <option value="2" class="admin_role_opt">Value 2</option>
                        <option value="0" class="admin_role_opt">Value 0</option>
                        <option value="3" class="admin_role_opt">Value 3</option>
                    </select>
                </td>  

                <td>
                    <input name="" type="submit" value="Update" href="/admin" class="btn btn-default">
                </td>

            </form>     
        </tr>
    @endforeach
    {{$query->links()}}
</table>

如果有帮助的话,这里是路线: Route::post('/admin','Controller@admin_changeinfo');

--

编辑: 显然,您不能拥有 Form inside a table

解决方案:将整个表格放入表单中。创建一个具有唯一值的按钮,并使其他字段也唯一:

<button name="submit" type="submit" value={{$x->user_id}} href="/admin" class="btn btn-default">
Update
</button>

在您的控制器中:

$pressed = $request->submit;

$this -> validate($request, [
    'email'.$pressed => 'required',
    'role'.$pressed => 'required|in:1,2,3,0'
]);

$name = $request -> input('name'. $pressed);
$target = $request -> input('target'. $pressed);

return 'submit called: '.$name.' '.$target;

固定版本:

<form method="post" action="{{ action('Controller@admin_changeinfo') }}" enctype="multipart/form-data">
    <input name="_token" type="hidden" value="{{ csrf_token() }}"/>

    <table class="table table-hover">
        @foreach ($query as $x)
            <tr class="table-dark">
            
                <th scope="row">User#{{$x->user_id}}</th>
                <td>{{$x->name}}</td>

                <td>
                    <input name="target{{$x->user_id}}" type="hidden" value="{{$x->user_id}}"/>
                    <input name="name{{$x->user_id}}" type="hidden" value="{{$x->name}}"/>

                    <input name="email{{$x->user_id}}" type="text" class="form-control" 
                    id="admin_place_em" value="{{$x->email}}" placeholder="{{$x->email}}"/>
                </td>
                <td>
                    <select name="role{{$x->user_id}}" class="custom-select" id="admin_role_change">
                        <option selected="" value={{$x->role}}>{{$role_ar[$x->role]}}</option>
                        <option value="1" class="admin_role_opt">Value 1</option>
                        <option value="2" class="admin_role_opt">Value 2</option>
                        <option value="0" class="admin_role_opt">Value 0</option>
                        <option value="3" class="admin_role_opt">Value 3</option>
                    </select>
                </td>  

                <td>
                    <button name="submit" type="submit" value={{$x->user_id}} href="/admin" class="btn btn-default">
                        Update
                    </button>
                </td>
            </tr>

        @endforeach
        {{$query->links()}}
    </table>

</form>

【问题讨论】:

    标签: html laravel forms loops submit


    【解决方案1】:

    1- 改变这个

    <input name="" type="submit" value="Update" href="/admin" class="btn btn-default">
    

    到这里

    <button type="submit">Update</button>
    

    2- 改变这个

    Route::post('/admin','Controller@admin_changeinfo');
    

    到这里:

    Route::post('/admin', ['as' => 'admin.changeinfo',
        'uses' => 'Controller@admin_changeinfo'] );
    

    3- 改变这个:

    <form method="post" action="{{ action('Controller@admin_changeinfo') }}" enctype="multipart/form-data">
    

    到这里:

    {!! Form::open(['route' => ['admin.changeinfo'],
                         'method' => 'post',
                         'enctype' => 'multipart/form-data']) !!}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 2013-01-24
      • 2020-05-27
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多