假设我有这样的路线:
$api->group(['prefix' => 'Tag/{type}'], function ($api) {
});
如您所见,有一个必需的type
参数。
现在我希望type
参数只能在配置文件中定义的数组中的一个项目如下:
return [
'name' => 'Tag',
'types' => [
'product' => 'product',
'user' => 'user'
]
];
方法type
只能是product
或user
。我知道我应该使用正则表达式约束但我不知道怎么做?
答案 0 :(得分:0)
简单!!!
创建一个帮助文件(我希望你知道如何创建一个帮助文件)并创建一个返回implode版本的函数。例如。 你在config文件夹中创建了一个arrayconfig.php,其中的代码是
return [
'name' => 'Tag',
'types' => [
'product' => 'product',
'user' => 'user'
]
];
现在在helper.php中创建一个函数
function typechecker(){
$array = config()->get('arrayConfig.types');
return implode("|",$arr);
}
您必须记住将其添加到composer.json文件并在控制台中运行命令
composer dump-autoload
添加帮助文件后 在composer.json中添加什么 如果你在app中创建一个文件夹助手,你的文件路径是
app/Helpers/helpers.php
你的composer.json会是这样的
"autoload": {
"classmap": [
....
],
"files": [
"app/Helpers/helpers.php"
],
"psr-4": {
....
}
}
只关注文件。该部分的其余部分已经存在。我添加了所有代码以使其易于理解
路线的最后一步
$api->group(['prefix' => 'Tag/{type}'], function ($api) {})->where('type', typechecker());
干杯!!!
N.B 它100%可行。如果它不起作用,那意味着你做错了