【问题标题】:Laravel link to destroy route not definedLaravel 链接以销毁未定义的路由
【发布时间】:2017-09-08 13:11:53
【问题描述】:

Heloo 伙计们,我想在 laravel 中销毁一个模型。一切都很好,但是给了我“Route [finance/loans.destroy,$loan->id] not defined”。 你能帮助我吗? 这是删除元素的按钮:

<td><button href="{{route('finance/loans.destroy,$loan->id') }}" id="btnExc" class="btn btn-sm btn-danger glyphicon glyphicon-trash" accesskey="x" hidden><br>Delete</button></td>

这些是路线:

|        | POST      | finance/loans             | loans.store      | App\Http\Controllers\loanController@store                              | web,auth     |
|        | GET|HEAD  | finance/loans             | loans.index      | App\Http\Controllers\loanController@index                              | web,auth     |
|        | GET|HEAD  | finance/loans/create      | loans.create     | App\Http\Controllers\loanController@create                             | web,auth     |
|        | PUT|PATCH | finance/loans/{loan}      | loans.update     | App\Http\Controllers\loanController@update                             | web,auth     |
|        | GET|HEAD  | finance/loans/{loan}      | loans.show       | App\Http\Controllers\loanController@show                               | web,auth     |
|        | DELETE    | finance/loans/{loan}      | loans.destroy    | App\Http\Controllers\loanController@destroy                            | web,auth     |
|        | GET|HEAD  | finance/loans/{loan}/edit | loans.edit       | App\Http\Controllers\loanController@edit 

路由声明:

Route::resource('/finance/loans','loanController'); 

【问题讨论】:

  • 链接会通过 GET 响应自动发送到服务器,loans.destroy 定义为DELETE 路由。您将希望改为使用 DELETE 方法发送表单请求。另外,它被定义为loans.destroy,而不是finance/loans.destroy
  • 您还应该向我们提供路线文件。
  • 我尝试使用 loan.destroy 和它;它给了我同样的错误。我想我不;t 宣布路线好。我尝试使用 Finance/loans.show 和 loan.show 显示在哪里定义为获取路线和相同的错误。
  • 你能张贴一份完整的表格吗?
  • 我没有表格。我通过href传递了id。你有一个截图

标签: php laravel routes


【解决方案1】:

您应该以 laravel 方式 (_method='DELETE') 发送带有 delete 方法的表单(无论是否为 js)。 检查这个

<td>
<form action="{{ route('loans.destroy', $loan->id) }}" method="post">
 <input type="hidden" name="_method" value="DELETE" />
<input type="submit"  value="Delete" name="Delete" id="btnExc" 
        class="btn btn-sm btn-danger glyphicon glyphicon-trash" accesskey="x"/>

</form>
</td>

【讨论】:

  • 现在它适用于表单。谢谢。我在 youtube 上看到一个视频,其中传递了 href 路线,这就是我这样做的原因。
【解决方案2】:

您调用的路线错误,并且缺少引号:

<td>
<button href="{{ route('loans.destroy', $loan->id) }}" id="btnExc" 
        class="btn btn-sm btn-danger glyphicon glyphicon-trash" accesskey="x" hidden>
    <br>Delete</button>
</td>

编辑

如果您不通过表单发布DELETE http 请求,您将无法访问它。如果您想使用按钮直接删除模型,您将必须制作自己的方法和路线:

Route:get('finance/loans/destroyMe/{id}', 'loanController@destroyMe');

然后在控制器中:

public function destroyMe($id)
{
    SomeModel::destroy($id);
}

这只是stubing代码,没有测试,但这是基本原理

【讨论】:

  • 我看到 ' 不见了,我把它放在代码中。只是在上面说我尝试了“loans.destroy”,但什么也没有
  • 您仍然没有发布完整的表格。当您使用route:list 获得输出时,Route 显然被声明为正常 :)
猜你喜欢
  • 2021-05-01
  • 2022-01-25
  • 1970-01-01
  • 2013-11-07
  • 2018-06-30
  • 2018-12-16
  • 1970-01-01
  • 2020-02-06
相关资源
最近更新 更多