php - 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');
解决方案
在 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
}
推荐阅读
- asp.net-core - Asp.net core Razor Page - JQ 数据表不加载数据
- android - Android房间数据库中的多个表
- java - Java .xml 创建可绘制按钮背景
- mysql - 如何在单个查询中沿月份和年份按周获取数据
- python - 为什么我的答案在 Python 中的小数点不正确?
- r - R:从一组值中选择最大值分配给一列
- java - 模式观察者和 Spring
- javascript - Javascript复制粘贴奇怪的行为
- php - ACF 转发器按日期子字段排序
- node.js - 在 mongoose.js 中哪种创建和更新文档的方式更好?