我在Silex中定义了如下路线。我假设它可以在带有注释的symfony2中完成(概念上)。
$app->get('/get/all/entities/page/{page}/limit/{limit}', function ($page, $limit) use ($app) {
// Build response
return new Response($response);
})->value('page', 1)->value('limit', 20);
使用上述默认值,如何在不指定page
和limit
的情况下使用路线?
例如,如果我定义类似下面的内容,我可以浏览到http://www.exmpale.com/get/all/entities/page
,一切都会好的,page
的默认值为1
:
$app->get('/get/all/entities/page/{page}', function ($page) use ($app) {
// Build response
return new Response($response);
})->value('page', 1);
答案 0 :(得分:1)
我尝试了以下内容:
$app->get('/page/{page}/{limit}', function($page, $limit) use ($app) {
return 'Page: ' . $page . ', limit: ' . $limit;
})->value('page', 1)->value('limit', 30);
以下是我为不同网址获得的输出:
http://localhost:8888/playground/silex/web/page ---> Page: 1, limit: 30
http://localhost:8888/playground/silex/web/page/3 ---> Page: 3, limit: 30
http://localhost:8888/playground/silex/web/page/54/100 ---> Page: 54, limit: 100
因此,一切都按预期工作,值正确设置。您的网址存在的问题是参数之间的静态部分... {page} / limit / {limit}。如果你的参数之间有静态部分一切正常,除了你不能使用默认的第一个参数调用url,至少我不知道有任何可能的方法来做到这一点
答案 1 :(得分:0)
在Symfony2中,这可以非常容易地完成。占位符的默认值在路由文件中设置:
http://symfony.com/doc/current/book/routing.html#required-and-optional-placeholders
<强>更新强>
在您的情况下,路由文件中的条目看起来像这样(YAML):
your_route:
path: /get/all/entities/page/limit
defaults: { _controller: YourBundle:YourController:YourAction, page: 1, limit: 2 }
答案 2 :(得分:0)
来自symfony文档:
当然,您可以拥有多个可选的占位符(例如 / blog / {slug} / {page}),但是在可选占位符之后的所有内容 必须是可选的。例如,/ {page} / blog是一个有效的路径,但页面 将始终是必需的(即简单/博客将不符合此路线)。
http://symfony.com/doc/current/book/routing.html#required-and-optional-placeholders