У меня есть следующие настройки маршрута.
$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
не работает, где school-name
, ~23
и 23
в приведенных выше URL-адресах являются параметрами для действия по умолчанию (index)
контроллера.
Я ничего не могу напечатать в методе initialize
контроллера.Пробовал ставить try catch на main
метод index.php
, без ошибок.
Я ничего не могу напечатать, когда выполняется 3-й 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] =>
)
ОБНОВЛЕНИЕ Удивительно, но следующий URL также работает
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] =>
)
Кто-нибудь может мне помочь, что я здесь не так делаю?Спасибо