Проблемы с Zend Framework application.ini - PullRequest
2 голосов
/ 31 марта 2012

Ладно, я довольно новичок в этом и прохожу все учебники и отвечаю на вопросы, которые могу найти. К сожалению, мне не удалось найти полный файл application.ini, который мне подходит.

Где-то, должно быть, у меня все закончилось - я могу заставить базовую маршрутизацию работать нормально, но как только я пытаюсь добавить переменную, я не могу заставить ее работать. Так что / guide-to works, но / guide-to / london выдает ошибку «где-то не указано»

Я делаю всю маршрутизацию в application.ini. Вот мой файл:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 1

resources.layout.layoutPath = APPLICATION_PATH "/views/layouts/"
resources.layout.layout = wrapper

resources.view = ""

resources.router.routes.home.route = "/stuff"
resources.router.routes.home.defaults.module = default
resources.router.routes.home.defaults.controller = index
resources.router.routes.home.defaults.action = index 

resources.router.routes.guide-to.route = "/guide-to"
resources.router.routes.guide-to.defaults.controller = "destination"
resources.router.routes.guide-to.defaults.action = "guide-to" 

resources.router.routes.place.route = "guide-to/:someplace"
resources.router.routes.place.defaults.controller = "destination"
resources.router.routes.place.defaults.action = "guide-to" 

resources.router.routes.guides.route = "/guiderrrs"
resources.router.routes.guides.defaults.controller = destination
resources.router.routes.guides.defaults.action = guiderrrs

resources.router.routes.guidez.route = "/guidez"
resources.router.routes.guidez.defaults.controller = destination
resources.router.routes.guidez.defaults.action = guidez 

pagination.item.count.per.page = 10

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

Может кто-нибудь определить проблему? Или у кого-нибудь есть работающее приложение.ini, которым они могут поделиться?

Все материалы с благодарностью получены!

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

Ваша конфигурация верна. Я считаю, что вы используете параметр неправильно, судя по ошибке.

В вашем модуле по умолчанию должен быть контроллер DestinationController и, как минимум, он должен иметь доступ к вашей переменной someplace.

class DestinationController extends Zend_Controller_Action
{
    public function guideToAction()
    {
        var_dump($this->getRequest()->getParams());
        var_dump($this->getRequest()->getParam('someplace'));
        exit;
    }
}

Это работает для меня с конфигом, который вы дали.

Надеюсь, это поможет.

1 голос
/ 31 марта 2012

Вам необходимо указать значение по умолчанию для некоторой переменной. переменная someplace является переменной, поэтому вам нужно задать ей значение по умолчанию. В противном случае он по умолчанию будет отменен. Я думаю так:

resources.router.routes.place.defaults.someplace="deault_value"

По моему мнению, не стоит связывать ваш URL с точными именами. потому что URL становится действительно связанным с приложением, которое может измениться.

Я предпочитаю использовать универсальный маршрутизатор в моей начальной загрузке. а затем сопоставить мой URL к нему. используя этот подход, моя система маршрутизации такая же, как я начинаю новый проект. Используйте что-то подобное в своей загрузке. это даже короче, чем определение всех маршрутов потому что если что-то изменится, вам придется вернуться обратно

protected function _initRoutes(){
    $front_controller=self::getFrontController();
    $router =  $front_controller->getRouter();

    $standard_route=new Zend_Controller_Router_Route(
        ':lang/:module/:controller/:action/:param_one/:param_two/:param_three/*',
        array(  'lang'=>$user_language,
                'module'=>'default',
                'controller'=>'index',
                'action' => 'index',
                'param_one'=>NULL,
                'param_two'=>NULL,
                'param_three'=>NULL
        )
    );
    $router->addRoute('standard', $standard_route);


    $default_route=new Zend_Controller_Router_Route(
        ':lang/:controller/:action/:param_one/:param_two/:param_three/*',
        array( 'lang'=>$user_language,
               'module'=>'default',
               'controller'=>'index',
               'action' => 'index',
               'param_one'=>NULL,
               'param_two'=>NULL,
               'param_three'=>NULL
        )
    );      
    $router->addRoute('default', $default_route);


    $front_controller->setRouter($router);


}

Lang - моя собственная переменная для поддержки интернационализации.

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