Regex Silex可选缓动器在路径中
我在Silex中构建了一个URL来匹配Regex Silex可选缓动器在路径中,regex,symfony,routes,silex,Regex,Symfony,Routes,Silex,我在Silex中构建了一个URL来匹配/tutorial或/tutorial/index或/tutorial/pageX,其中X是一个数字,但我也希望它匹配/tutorial/,我正在努力实现这一点。这是我到目前为止的路线: $app->get('/tutorial/{page}', 'app\\Controller\\Tutorial::index') ->assert('page', '(^(page[\d]+|index)$|^$)') ->value('
/tutorial
或/tutorial/index
或/tutorial/pageX
,其中X是一个数字,但我也希望它匹配/tutorial/
,我正在努力实现这一点。这是我到目前为止的路线:
$app->get('/tutorial/{page}', 'app\\Controller\\Tutorial::index')
->assert('page', '(^(page[\d]+|index)$|^$)')
->value('page', 'index');
如果我试着让它工作,没有任何匹配。那么为什么它在Silex中不起作用,我可以用什么来起作用呢
如果这是重复的,但我所有的搜索结果都是相似的,但不是整个字符串必须匹配或为空的确切情况。尝试此正则表达式:
^(第\d页+|索引|)$
它将匹配“pagen”、“index”或“”
如果您仍然无法实现所需的功能,我想问题在于
app\Controller\Tutorial::index
方法无法处理空匹配。您能检查一下这是否是您想要的吗?否则,请澄清输入字符串可以是什么以及您希望输出是什么样子。这是我想要的输出,但是/tutorial/
不应该在正则表达式中,因为正则表达式只用于{page}
值。我希望{page}
要么是pageX
,其中X
是一个数字,要么是索引
,要么什么都没有。我不知道还有什么可以澄清这一点。您熟悉symfony/silex中的路由吗?我大致了解您正在尝试做什么page
是一个变量,您可以尝试使用assert
对其进行验证,还可以将index
设置为其默认值。如果^(page\d+| index |)$
在当前代码中不起作用,请尝试不要将值
与断言
一起使用,在查询中传递“index”值,然后查看它是否起作用。然后尝试使用'app\Controller\Tutorial::index'
。如果URL是/Tutorial
,则值
方法几乎会将{page}
设置为索引。如果URL是/tutorial/a_value
,那么它将根据正则表达式匹配该值,如果它通过调用app\Controller\tutorial::index
方法,将a_value
作为变量$page
传入。如果该值与正则表达式不匹配,它将抛出一个错误,那么,您是否尝试了->value('page','')代码>使用更新的正则表达式?你得到预期的行为了吗?如果不是,我想问题在于Tutorial::index方法无法处理空匹配。