其中Laravel Route参数

时间:2018-03-25 06:32:11

标签: php laravel

假设我有这样的路线:

$api->group(['prefix' => 'Tag/{type}'], function ($api) {

});

如您所见,有一个必需的type参数。

现在我希望type参数只能在配置文件中定义的数组中的一个项目如下:

return [
    'name' => 'Tag',
    'types' => [
        'product' => 'product',
        'user'    => 'user'
    ]
]; 

方法type只能是productuser。我知道我应该使用正则表达式约束但我不知道怎么做?

1 个答案:

答案 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%可行。如果它不起作用,那意味着你做错了