Zend Framework модуль, контроллер, действия конкретных маршрутов - PullRequest
1 голос
/ 07 октября 2010

В моем приложении Zend Framework у меня есть маршруты и значения по умолчанию, такие как:

resources.router.routes.plain.defaults.module = "index"
resources.router.routes.plain.defaults.controller = "index"
resources.router.routes.plain.defaults.action = "index"

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

Давайте предположим,этот модуль / контроллер / структура действия:

content --- article --- read
                    --- write
        --- news    --- list
                    --- write
user    --- auth    --- signin
                    --- signout
        --- access  --- check
                    --- update

в этой архитектуре,

для модуля = содержимое. Я хочу, чтобы контроллер = статья был контроллером по умолчанию, а действие = считывалось действием по умолчанию.
если контроллер = новости выбран, то действие = список становится действием по умолчанию

для модуля = пользователь Я хочу, чтобы контроллер = auth был контроллером по умолчанию, а действие = вход в систему было действием по умолчанию.если выбран контроллер = доступ, то действие = проверка становится действием по умолчанию.

Так возможно ли это сделать в application.ini?А как для этого примера?

Заранее спасибо.

1 Ответ

0 голосов
/ 07 октября 2010

Случайные мысли:


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

resources.router.routes.user.route = "user/:controller/:action/*"
resources.router.routes.user.defaults.module = "user"
resources.router.routes.user.defaults.controller = "auth"
resources.router.routes.user.defaults.action = "signin"

Вы также можете определить Module_IndexController::preDispatch() или User_AccessController::indexAction(), который использует _forward для отправки запроса на правильное значение по умолчанию:

// delaing with the redirect in preDispatch
// will affect all requests to this controller
class User_IndexController extends Zend_Controller_Action {
  public function preDispatch() {
    // send to default location for User Module:
    $this->_forward('signin', 'auth')
  }
}

// dealing with the redirect in indexAction:
// will only affect requests that go to the "index" action
class User_AccessController extends Zend_Controller_Action {
  public function indexAction() {
    // send to default location for User Module:
    $this->_forward('check')
  }
}

Из Документация Zend Framework - Методы служебной программы контроллера

_forward($action, $controller = null, $module = null, array $params = null): выполнить другое действие. При вызове в preDispatch() текущее запрошенное действие будет пропущено в пользу нового. В противном случае после обработки текущего действия будет выполнено действие, запрошенное в _forward().

...