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

Laravel pass multiple parameters to named route

提问人:Jelly Bean 提问时间:7/30/2019 最后编辑:halferJelly Bean 更新时间:8/1/2019 访问量:917

问:

我被困在将附加参数传递给命名路由上。 我已经在 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>
php html laravel 命名路由

评论

1赞 Salman Zafar 7/30/2019
您在发送 get 请求时正在使用 delete 路由,无论是将路由更改为 get 还是您的请求删除请求
0赞 halfer 8/1/2019
(一旦您在下面得到答案,就没有必要将其复制到您的问题中。这里欢迎自我回答,但请在回答帖子中提出)。

答:

3赞 Jerodev 7/30/2019 #1

data-method="DELETE"不会神奇地让你的链接做一个请求。锚标记只能发送请求。DELETEGET

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

评论

0赞 Jelly Bean 7/30/2019
关于将附加参数传递给删除路由的正确方法的任何建议?
2赞 Jerodev 7/30/2019
您已将参数正确地传递到删除路由。只是请求类型不正确。
0赞 Zubair Lone 7/30/2019 #2

根据您的信息, u Juts 需要在锚标记的 HREF 中更改 route 更改为 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>

评论

0赞 Jelly Bean 7/30/2019
不幸的是,这不起作用,给出错误:未定义路由
1赞 Shivendra Singh 7/30/2019 #3

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

喜欢。

<td data-label="Destroy:">
{{ Form::open(['route' => ['asset.delete', $row->id, $key], 'method' => 'delete']) }}
<button type="submit">Destroy</button>
{{ Form::close() }}
</td>
2赞 Mitesh Rathod 7/30/2019 #4

我已经在我的系统中进行了测试,并且它有效。

这是我的沃金代码

<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>

希望这对您有所帮助

评论

0赞 Jelly Bean 7/30/2019
您的解决方案仅使用一个参数,您是否使用多个参数对其进行了测试?
0赞 Jelly Bean 7/30/2019
我确实利用了您的 onclick 事件,但感谢您的 +1