【问题标题】:Route resource destroy not working laravel路由资源销毁不工作 laravel
【发布时间】:2021-05-29 09:04:10
【问题描述】:

我有一个user_transaction 表,我正在尝试删除表中的一条记录,但没有成功。

UserTransaction.php

protected $table = 'user_transaction';

刀片

<form action="{{ route('transactions.destroy', $transaction->id) }}" method="post" >
    @method('delete')
    @csrf
    <button type="submit" class="btn btn-default p-0">
        <i class="ft-trash-2 text-grey font-medium-5 font-weight-normal"></i>
    </button>
</form>

web.php

Route::resource('transactions', 'Admin\TransactionController');

TransactionController.php

public function destroy(UserTransaction $userTransaction)
{
    dd($userTransaction->id);
    $userTransaction->delete();
    return redirect()->route('transactions.index');
}

此代码显示null

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    这可能的原因是资源路由参数与资源控制器中用于路由模型绑定的变量名称之间的命名不匹配。

    默认情况下,资源路由使用您在路由定义中提供的资源的单数作为路由参数。所以在你的例子中:

    Route::resource('transactions', 'Admin\TransactionController');
    

    上面会产生一些类似如下的路由:

    GET|HEAD  | /transactions/{transaction}
    DELETE    | /transactions/{transaction}
    GET|HEAD  | /transactions/{transaction}/edit
    

    要使路由模型绑定起作用,路由参数名称和控制器中使用的变量名称需要匹配。

    所以您需要做的是更改控制器中使用的变量的名称:

    public function destroy(UserTransaction $transaction)
    {
        dd($transaction->id);
        $transaction->delete();
        return redirect()->route('transactions.index');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 2014-09-05
      • 2021-06-01
      • 2012-03-17
      • 2017-12-18
      • 2016-07-23
      • 2022-01-25
      相关资源
      最近更新 更多