Неверный контроллер, использующий пользовательские маршруты - PullRequest
1 голос
/ 25 марта 2012

Я следовал инструкции по созданию пользовательских маршрутов из книги Zend Framework - Руководство для начинающих

Я изменил свой файл application.ini, чтобы включить эту маршрутизациюинформация:

resources.router.routes.static-content.route = /content/:page
resources.router.routes.static-content.defaults.module = default
resources.router.routes.static-content.defaults.controller = static-content
resources.router.routes.static-content.defaults.view = static-content
resources.router.routes.static-content.defaults.action = display

Учитывая приведенную выше конфигурацию, у меня есть этот контроллер:

<?php

class Default_StaticContentController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function displayAction()
    {
        // action body
        $page = $this->getRequest()->getParam('page');
        if (file_exists($this->view->getScriptPath(null) . 
                '/' . $this->getRequest()->getControllerName() . '/' .
                $page . $this->viewSuffix
                )) {
            $this->render($page);
        }
        else {
            throw new Zend_Controller_Action_Exception('HLC - Page not found', 404);
        }
    }
}

У меня есть представление с именем about.phtml в APPLICATION_PATH / modules / default / views / static- static-папка содержимого.

Что я получаю, я получаю сообщение об ошибке:

An error occurred

Page not found

Exception information:

Message: Invalid controller class ("StaticContentController")

Stack trace:

#0 /Applications/MAMP/htdocs/zend/library/Zend/Controller/Dispatcher/Standard.php(262): Zend_Controller_Dispatcher_Standard->loadClass('StaticContentCo...')
#1 /Applications/MAMP/htdocs/zend/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#2 /Applications/MAMP/htdocs/zend/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#3 /Applications/MAMP/htdocs/zend/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#4 /Applications/MAMP/htdocs/HLC/public/index.php(26): Zend_Application->run()
#5 {main}  
Request Parameters:

array (
  'page' => 'about',
  'module' => 'default',
  'controller' => 'static-content',
  'view' => 'static-content',
  'action' => 'display',
) 

Обратите внимание, что он не отображает мои пользовательские Zend_Controller_Action_Exception, а выдает глобальную ошибку.

Я использую URL: http://hlc.local:8888/content/about

Действие индекса по умолчанию работает нормально, только эта маршрутизация не работает.

Ответы [ 2 ]

2 голосов
/ 25 марта 2012

если вы действительно внимательно следите за книгой, у вас есть дополнительная строка в объявлении маршрута, и ваш класс контроллера должен быть StaticContentController.

, вот определение маршрута из книги, которая работает.

resources.router.routes.static-content.route = /content/:page
resources.router.routes.static-content.defaults.module = default
resources.router.routes.static-content.defaults.controller = static-content
resources.router.routes.static-content.defaults.action = display

Я до сих пор храню этот код с прошлого лета.

Я нашел эту книгу менее чем удовлетворительной и не совсем для начинающих.Он не обращается к компоненту Zend_Db, решив вместо этого ввести Doctrine 1.2.Кажется, существует тенденция, что многие из этих начинающих / простых книг считают, что полная ORM более полезна, чем Zend_Db.Если вы уже знакомы с Doctrine, этот подход работает отлично, иначе у новичка много вопросов, чтобы изучать ZF и Doctrine одновременно.

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

0 голосов
/ 25 марта 2012

Не знаю, что вы используете для автозагрузки. так что было бы полезно определить. насколько я понимаю, ваш названный класс должен быть чем-то вроде этого ModulePath_ApplicationPath_ControllerName, поэтому его Default_Application_StaticContentController.

и для лучшей маршрутизации я предпочел zend manual . Вы можете попробовать этот учебник для маршрута. это поможет вам.

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