【发布时间】:2019-02-18 10:53:38
【问题描述】:
我有以下路线设置。
$router->add('/schools', array(
'module' => 'schools',
'namespace'=>'MyNameSpace\Schools\Controllers\\',
'controller'=>'index',
'action' => 'index'
));
$router->add('/schools/:params",array(
'module' => 'schools',
'namespace'=>'MyNameSpace\Schools\Controllers\\',
'controller'=>'index',
'action' => 'index',
'params' => 1
));
问题:
1. http://www.example.com/schools/23
工作正常
2. http://www.example.com/schools/~23
同样有效
但是,
3. http://www.example.com/schools/school-name
不工作,
其中上述URL中的school-name、~23和23是控制器默认动作(index)的参数。
我无法在控制器的initialize 方法中打印任何内容。尝试将 try catch 也放在 index.php 的 main 方法上,没有错误。
执行上面的第三个 URL 时,我无法打印任何内容,我只是在浏览器上打印了 1,没有其他错误。
然后,我在http://www.example.com/schools/~23 中打印了匹配的路由路径,它给出了
Phalcon\Mvc\Router\Route Object
(
[_pattern:protected] => /schools/:params
[_compiledPattern:protected] => #^/schools(/.*)*$#
[_paths:protected] => Array
(
[module] => schools
[namespace] => MyNameSpace\Schools\Controllers\
[controller] => index
[action] => index
[params] => 1
)
[_methods:protected] =>
[_hostname:protected] =>
[_converters:protected] =>
[_id:protected] => 34
[_name:protected] =>
[_beforeMatch:protected] =>
[_group:protected] =>
)
按照路线,对象打印在http://www.example.com/schools/23
Phalcon\Mvc\Router\Route Object
(
[_pattern:protected] => /schools/:action/:params
[_compiledPattern:protected] => #^/schools/([a-zA-Z0-9\_\-]+)(/.*)*$#
[_paths:protected] => Array
(
[module] => schools
[namespace] => MyNameSpace\Schools\Controllers\
[controller] => index
[action] => 1
[params] => 2
)
[_methods:protected] =>
[_hostname:protected] =>
[_converters:protected] =>
[_id:protected] => 36
[_name:protected] =>
[_beforeMatch:protected] =>
[_group:protected] =>
)
更新 令人惊讶的是,以下网址也可以使用
http://www.example.com/schools/~school-name 但不是http://www.example.com/schools/school-name
Phalcon\Mvc\Router\Route Object
(
[_pattern:protected] => /schools/:params
[_compiledPattern:protected] => #^/schools(/.*)*$#
[_paths:protected] => Array
(
[module] => agencies
[namespace] => MyNameSpace\Schools\Controllers\
[controller] => index
[action] => index
[params] => 1
)
[_methods:protected] =>
[_hostname:protected] =>
[_converters:protected] =>
[_id:protected] => 34
[_name:protected] =>
[_beforeMatch:protected] =>
[_group:protected] =>
)
谁能帮助我,我在这里做错了什么? 谢谢
【问题讨论】:
标签: php phalcon phalcon-routing