首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP :可选和必需Param的苗条组合

PHP :可选和必需Param的苗条组合
EN

Stack Overflow用户
提问于 2017-07-18 05:30:02
回答 2查看 1K关注 0票数 1

我要一种类似的路线。

代码语言:javascript
运行
复制
$app->get('/FetchImages/{catid}[/{subcatid}]/{page}', function ($request, $response, $args) {
    //Code
});

在路线上,我想:

  • 类别-强制性
  • SubCategory -可选
  • 页-强制

我能在一条路上做吗?如果是的话,怎样才能做到呢?我希望对这些路径有一个函数:

代码语言:javascript
运行
复制
{catid}/{page}
{catid}/{subcatid}/{page}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-18 19:20:27

不能在可选之后使用强制占位符。如果您尝试,fastRoute (路由器,由Slim使用)将给您一个错误。

即使我们从Slim和fastRoute中抽象出来,我也建议您重新考虑您的API的URL结构。强制性优先,可选优先,这是自然的。

为了能够对路由使用相同的回调,我建议您将page作为查询参数传递:

代码语言:javascript
运行
复制
$this->get('/FetchImages/{categoryId}[/{subcategoryId}]', function($request, $response, $args) {

    $categoryId = $args['categoryId'];
    $subcategoryId = $args['subcategoryId'];

    //  Get requested page value.
    //  It defaults to null if no page specified
    $page = $request->getQueryParam('page', null);

});

然后像这样发送请求:

GET http://myapp.com/FetchImages/kittens/dangerous?page=2

在这种情况下,您可以自由地传递或跳过页面,并且URL结构仍然非常干净。

票数 0
EN

Stack Overflow用户

发布于 2017-07-19 17:11:05

您可以使用相同的回调创建两个路径,如下所示。这不是一个完美的解决方案,但您不必将页面放入查询参数中。

代码语言:javascript
运行
复制
$myCallback = function($request, $response, $args) {
    $catid    = $args['catid'];
    $subcatid = isset($args['subcatid']) ? $args['subcatid'] : null;
    $page     = $args['page'];
    // do other stuff
};

$app->get('/FetchImages/{catid}/{page}', $myCallback);
$app->get('/FetchImages/{catid}/{subcatid}/{page}', $myCallback);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45158244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档