【问题标题】:Laravel 5 missing required parameters on destroy routeLaravel 5 在销毁路线上缺少必需的参数
【发布时间】:2016-05-07 16:50:45
【问题描述】:

我最近从 laravel 5.1 升级到 5.2,现在我收到 Missing required parameters for [Route: example.destroy] [URI: example/{args}] 的错误。

错误发生在这里: <form class="form-horizontal" action="<?php echo route('example.destroy'); ?>" method="post"> 在表单的 action 属性上。

这是在route.php上注册路由的方式

Route::resource('example', 'ExampleController');

当我在 5.1 中时,这一行没有错误。我刚升级到 5.2,现在出现了。

它的功能是允许用户通过选中他们希望删除的复选框来删除多个条目。然后在提交时,它会重定向到控制器上的destroy方法。

【问题讨论】:

  • 请以example.destroy的名称发布路线的路线定义。

标签: php laravel laravel-5


【解决方案1】:

试试这个:

<form class="form-horizontal" action="<?php echo route('example.destroy', $record->id); ?>" method="post">

或 Laravel 方式:

{!! Form::open(['route' => ['example.destroy', $record->id],
                                                'method' => 'delete']) !!}

{!! Form::close() !!}

【讨论】:

  • 这适用于您有一个页面执行一对一删除的情况。但是,就我而言,我在单个页面上进行多次删除。
【解决方案2】:

将我的应用更新到 Laravel 5.2 时,我遇到了同样的问题。

显然,Laravel 5.2 需要一个有效的 Route 来“销毁资源”,例如:

/my-route/item-to-destroy/{id}

在这里,在我们的应用程序中,我将“{id} = 0”或“{id} = null”放在每条路由的末尾(当调用尚未准备好的“路由销毁”时)。

在你的情况下,它会类似于:

<form action="<?php echo route('example_route.destroy', ['id'=>0]); ?>" method="post">

或者,声明一个有效的资源ID:

<form action="<?php echo route('example_route.destroy', ['id'=>$object->id]); ?>" method="post">

【讨论】:

  • 是的,虽然我只是将其设置为空白,但这里也是如此。 &lt;form class="form-horizontal" action="&lt;?php echo route('example.destroy', ''); ?&gt;" method="post"&gt; 但这是正确的做法吗?
  • 不完全正确,取决于您的应用程序的工作方式,它可能会导致访问路由的间隙。但是,它有效:D
【解决方案3】:

你可以试试下面的

<form class="form-horizontal" action="<?php echo       
url('example'); ?>" method="post">

Route::post('example', 'ExampleController@destroy');

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 2020-06-04
    • 2021-11-06
    • 2021-09-04
    • 2023-02-07
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    相关资源
    最近更新 更多