【问题标题】:Laravel pass multiple parameters to named routeLaravel 将多个参数传递给命名路由
【发布时间】:2019-12-07 12:00:34
【问题描述】:

我陷入了将附加参数传递给命名路由的问题。 我在Laravel doc's 上找到了如何操作,在Stack Overflow answer 上找到了答案。

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

我的路线有什么问题?

路线:

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


【解决方案1】:

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

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

【讨论】:

  • 关于将附加参数传递给删除路由的正确方法有什么建议吗?
  • 您已经将参数正确传递给您的删除路由。只是请求类型不正确。
【解决方案2】:

根据您提供的信息, u Juts 需要将anchor tag change route 的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>

【讨论】:

  • 不幸的是,这不起作用,给出错误:未定义路由
【解决方案3】:

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

喜欢。

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

【讨论】:

    【解决方案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>
    

    希望对你有帮助

    【讨论】:

    • 您的解决方案只使用了一个参数,您是否使用多个参数对其进行了测试?
    • 我确实利用了您的 onclick 事件,但感谢您的 +1
    猜你喜欢
    • 2019-08-15
    • 2021-10-15
    • 2019-03-03
    • 2018-08-14
    • 2016-09-19
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多