首页 > 解决方案 > Laravel 路由可选参数到控制器

问题描述

您好,请帮我解决以下问题,

在 Laravel 5.5 上

我有以下路线:

这个有效:

Route::delete('/delete-comment/{id}', 'CommentController@destroy');

这个不起作用,因为我使用与上述路线相同的方法,并且没有第一个不需要的参数“re_id”:

Route::delete('/your-template/{re_id}/delete-comment/{id}', 'CommentController@destroy');

方法是:

public function destroy($id)
{
   //do something
}

我想对子路由“re_id”使用没有第一个参数的相同方法。

我不需要这种解决方案,因为我想对两条路线使用相同的功能。

public function destroy($re_id= '' $id)
{
   //do something
}

有没有办法忽略路线上的第一个参数“re_id”或更通用的方法来在路线上的第一个片段上使用 slug,例如:

顺便说一句,哪个不起作用:

Route::delete('/{slug?}/delete-comment/{id}', 'CommentController@destroy');

标签: phplaravelroutes

解决方案


在 PHP 中,通常可选参数必须在末尾...

例如,这将导致 PHP v7.1 中出现致命错误^

function test($first = null, $second)
{
    echo $first .' '.$second;
}

test('string');

在你的情况下,我会这样尝试(不确定它是否会起作用)

Route::delete('/delete-comment/{id}/{slug?}', 'CommentController@destroy');

public function destroy($id, $re_id = null)
{
   //do something
}

推荐阅读