почему мой маршрут в файле .ini не работает? - PullRequest
1 голос
/ 13 сентября 2010

В моем Bootstrap.php у меня есть следующий код, который определяет маршрут:

    $router = Zend_Controller_Front::getInstance()->getRouter();

    $router->addRoute('pageDetails', new Zend_Controller_Router_Route('page-details/:uid/:title', array(
        'module'        => 'default',
        'controller'    => 'list',
        'action'        => 'detail',
    ), array(
        'uid'           => '\d+',
        'title'         => '(.*)?',
    )));

Это работает.

Затем я попытался изменить настройку маршрута на использование .iniфайл, в котором определены маршруты.Файл .ini выглядит так:

[routes]
pageDetails.route = "page-details/:uid/:title"
pageDetails.default.module = "default"
pageDetails.default.controller = "list"
pageDetails.default.action = "detail"
pageDetails.reqs.uid = "\d+"
pageDetails.reqs.title = "(.*)?"

И я добавляю маршруты в Bootstrap.php через:

    $config = Zend_Registry::get('config');

    $router = Zend_Controller_Front::getInstance()->getRouter();
    $router->addConfig(new Zend_Config_Ini($config['routes']['configPathname'], 'routes'));

Хотя версия .ini и маршрут определены в PHPкод должен делать то же самое, версия .ini не работает.Во внешнем интерфейсе нет сообщения об ошибке, ссылки выглядят нормально, но при нажатии на ссылку с этим маршрутом я просто перенаправляюсь на стартовую страницу.

Чего не хватает?

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Попробуйте добавить к ним префикс «маршруты», как в документации:

[routes]
routes.archive.route = "archive/:year/*"
routes.archive.defaults.controller = archive
routes.archive.defaults.action = show
routes.archive.defaults.year = 2000
routes.archive.reqs.year = "\d+"

Затем попробуйте это:

$config = Zend_Registry::get('config');
$routes = new Zend_Config_Ini($config['routes']['configPathname'], 'routes')
Zend_Controller_Front::getInstance()->getRouter()->addConfig($routes, 'routes');
0 голосов
/ 13 сентября 2010

Вы не можете использовать {}|&~![()^" символов в ключе, и вы должны заключить в двойную кавычку строку для значения, если используете эти символы.

Итак, двойная кавычка:

pageDetails.reqs.title = ""(.*)?""

Подробнее об этом см .: http://php.net/manual/en/function.parse-ini-file.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...