【问题标题】:Laravel resource store method is being redirected to destroy methodLaravel 资源存储方法被重定向到销毁方法
【发布时间】:2018-04-03 02:37:32
【问题描述】:

我有一个资源路线

Route::resource('climb-excluded','CexcludedController',['only'=>['store','update','destroy']]);

我的代码在视图中保存数据

<div class="col-lg-4">
<form class="form" method="POST" action="{{ route('climb-excluded.store') }}">
{{ csrf_field() }}
<div class="card">
    <div class="card-head style-primary">
        <header>Add item</header>
    </div>
    <div class="card-body floating-label">
        <div class="row">
            <div class="col-sm-12">
                <div class="form-group">
                    <input type="text" class="form-control" id="name" name="name">
                    <label for="name">Name</label>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-sm-10 col-sm-offset-1">
                <button type="submit"
                        class="btn btn-block btn-success ink-reaction">
                    Add
                </button>
            </div>
        </div>
    </div>
</div>

销毁数据的按钮:

{!!  Form::open( array('route'=>array('climb-excluded.destroy', $excluded->id),
'method'=>'DELETE')) !!}
<button type="submit"
    class="btn ink-reaction btn-floating-action btn-sm btn-danger "
    rel="tooltip"
    title="Delete">
<i class="fa fa-trash-o" aria-hidden="true"></i>
</button
{!! Form::close() !!}

存储方法表单控制器:

    public function store(Request $request)
{
    $this->validate($request,[
        'name' => 'required|max:255'
    ]);

    $excluded = new Cexcluded;
    $excluded -> name = $request->name;
    $excluded->save();
    //redirect to
    Session::flash('success','New item sucessfully added !');
    return back()->withInput(['tabs'=>'second4']);
}

销毁方法表单控制器:

    public function destroy($id)
{
    $trekExcluded = Cexcluded::find($id);
    $trekExcluded->tours()->detach();
    $trekExcluded ->delete();
    Session::flash('success','Item sucessfully deleted !');
    return back()->withInput(['tabs'=>'second4']);
}

我面临的麻烦/错误是我可以成功地将第一行插入表中。但是当我选择第二个时, store 方法以某种方式重定向到 destroy 方法并删除了第一个插入的行。虽然我已经在表单的 action 属性中明确声明了 store 方法。

仅供参考:两条路线都存在于同一视图/页面中。 col-md-8中的destroy方法和foreach循环while store方法在col-md-4中

【问题讨论】:

    标签: php laravel blade laravel-eloquent laravel-5.5


    【解决方案1】:

    很明显,您的表单没有唯一的name 或id,所以这就是第二个方法被重定向到destroy 方法的原因。做这样的事情:

    cex-store-1
    cex-destroy-1
    

    【讨论】:

    • 您的意思是在表单中添加id 属性??
    • 是的。但是记住需要写JS来触发销毁表单
    • 我想在没有js的情况下完成这个任务
    • 我宁愿通过JS来做。这样我就不必为我的销毁表单添加提交按钮了。
    猜你喜欢
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 2017-12-18
    • 2016-07-23
    • 2015-03-10
    • 2017-03-01
    相关资源
    最近更新 更多