Laravel将多个参数传递给命名路由

时间:2019-07-30 06:47:52

标签: php html laravel named-routing

我被困在将附加参数传递给命名路由上。 我在Laravel doc's上找到了解决方法,并在Stack Overflow answer上找到了答案。

我的问题是我无法进入控制器中的删除功能,当我单击链接时,页面会刷新,并且不会出现任何错误,但不会进入控制器。

我的路线怎么了?

路线:

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

Href:

<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 个答案:

答案 0 :(得分:3)

data-method="DELETE"不会神奇地使您的链接执行DELETE请求。定位标记只能发送GET个请求。

您要么必须创建可与锚标记一起使用的GET路由,要么必须创建表单that can be spoofed to send a DELETE request

答案 1 :(得分: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>

我希望这对您有帮助

答案 2 :(得分:1)

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

喜欢。

<td data-label="Destroy:">
{{ Form::open(['route' => ['asset.delete', $row->id, $key], 'method' => 'delete']) }}
<button type="submit">Destroy</button>
{{ Form::close() }}
</td>

答案 3 :(得分:0)

根据您提供的信息, u Jut需要将锚标记的HREF更改为更改为route('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>