对不起,这是一个很长的问题,但我想在这里做一些讨论。
我是zend的新手,并试图避免使用模块,因为我认为zend的视图方面非常灵活,模块会添加额外的目录和混乱。但是我想知道一件事。我正在构建的应用程序非常大,它实际上在应用程序中有模块概念。
我知道如果使用模块,事情可以更有条理,你可以将模块放在自己的目录中,并具有单独的视图和控制器等。
然而我决定以
的形式模拟模块目录- lang / module(实际上是控制器)/ controller(这是动作)/ action(那是child-action)/ other-params / -
我们如何进行并进行此类模拟
我最初的想法是为应用程序添加另一条路径,将第4个参数作为子动作。 e.g
class some_controller extend extends Zend_Controller_Action {
public function someAction{
switch (child-action) {
case 'child-action1':
....... excute some action
break;
case 'child-action2':
....... excute some action
break;....
}
}
这样的事情。这是否有意义或是否有其他方法?并且通过这种方法我们如何将Zend_ACL集成为如何将“假儿童行动”作为资源添加?
谢谢。
答案 0 :(得分:1)
也许您可以这样设置路线:
/:controller/:action/:child-action
有关设置路线的详细信息,请参阅here。
然后在你的行动方法中:
$childAction = $this->getParam('child-action');
// convert $childAction to camelCase.
if(method_exists($this, $childAction))
{
// Check ACL
$this->$childAction();
}
不要使用Action后缀命名子操作,因为这样可以直接调用操作。您可以使用类似'fooChild'的内容对其进行后缀,但不能使用'fooChildAction',因为它们会映射到'foo-child'。
答案 1 :(得分:0)
我认为这比使用模块目录结构更加复杂...... 这一次设置并不复杂,它只是类的逻辑分离......
答案 2 :(得分:0)
添加路线会更有意义;)
拥有:module /:controller /:action / - >管理/帖/添加
和:module / posts / add /:action - > admin / posts / add /概念将链接到PostsAddController :: ConceptAction();
比切换语句更好我猜;)但是你可以用它来......案例“......”:$ this-> _forward('my-action','my-controller');