0

我陷入了将附加参数传递给命名路由的问题。我在Laravel 文档上找到了如何做到这一点,以及在Stack Overflow 上找到了答案

我的问题是我无法在控制器中使用我的删除功能,当我单击链接时,页面刷新并且没有抛出任何错误但没有到达控制器。

我的路线可能有什么问题?

路线:

Route::delete('/assets/{asset}/{model}', 'AssetManagmentController@destroy')->name('asset.delete');

参考:

<td data-label="Destroy:"><a href="{{ route('asset.delete', ['asset' => $row->id, 'model' => $key] ) }}" data-method="DELETE" data-destoy='destroy' name="delete_item">Destroy</a></td>

<td data-label="Destroy:"><a href="{{ route('asset.delete', ['asset' => 'id', 'model' => 'model'] ) }}" data-method="DELETE" data-destoy='destroy' name="delete_item">Destroy</a></td>
4

4 回答 4

3

data-method="DELETE"不会神奇地让您的链接发出DELETE请求。锚标签只能发送GET请求。

您要么必须创建一个GET可以与锚标记一起使用的路由,要么创建一个可以被欺骗的表单来发送DELETE请求

于 2019-07-30T06:52:17.633 回答
2

我已经在我的系统中进行了测试,并且可以正常工作。

这是我的工作代码

<td>
  <form method="post" id="delete-form-{{ $post->id }}" action="{{ route('post.destroy', $post->id) }}" style="display: none;"> @csrf @method('DELETE') </form>
  <a href="javascript: void(0);" onclick="if(confirm('Are you sure, You want to delete this?')) { event.preventDefault(); document.getElementById('delete-form-{{ $post->id }}').submit(); }">
    <span class="fa fa-trash"></span>
  </a>
</td>

我希望这对你有帮助

于 2019-07-30T07:35:13.210 回答
1

根据您提到的路线,需要创建带有删除请求的表单。

喜欢。

<td data-label="Destroy:">
{{ Form::open(['route' => ['asset.delete', $row->id, $key], 'method' => 'delete']) }}
<button type="submit">Destroy</button>
{{ Form::close() }}
</td>
于 2019-07-30T07:18:25.073 回答
0

根据您提供的信息,您需要将锚标签更改路由的 HREF 更改为路由('asset/assets_id/Modelname')。

Route::delete('/asset/{id}/{model}','AssetManagmentController@destory')->name('assets.delete');

<td data-label="Destroy:"><a href="{{ route('asset/assets_id/Modelname') }}" data-method="DELETE" data-destoy='destroy' name="delete_item">Destroy</a></td>
于 2019-07-30T07:08:40.497 回答