首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨模块通信zend框架php

跨模块通信zend框架php
EN

Stack Overflow用户
提问于 2012-01-20 21:52:27
回答 4查看 1.3K关注 0票数 1

如何从Zend中的另一个模块调用controller::action。

目录树

代码语言:javascript
复制
-modules
--auth
---controllers
--crm
--default
---controllers

我如何做这样的事情:

代码语言:javascript
复制
/* module\default\controller */

public function indexAction(){
        $something = \model\auth\IndexController::doSomething();
}

更新:

我知道这样的事情可以通过模块化扩展see here在CodeIgniter中实现

代码语言:javascript
复制
$out = modules::run('module/controller/method', $param1, ....);
EN

回答 4

Stack Overflow用户

发布于 2012-01-20 22:18:29

据我所知,唯一能实现这一功能的就是ActionStack助手:

ZF Action stack helper

控制器实际上并不打算以与大多数其他方法相同的方式调用。

票数 2
EN

Stack Overflow用户

发布于 2012-01-27 08:15:13

如果你需要调用另一个动作,而不是继续你的程序流,那么就像RockyFord说的那样有问题。

考虑到您关于部分检索信息来构建小部件的解释,我将在库中创建一个帮助器,以便可以从任何地方调用它,例如:

代码语言:javascript
复制
-lib
--MyLib
---Controller
----Action
-----Helper
------ Foo.php

Foo操作帮助器可以是:

代码语言:javascript
复制
class MyLib_Controller_Action_Helper_Foo extends Zend_Controller_Action_Helper_Abstract {

   public setBar() { 
      // some code here
   }       

   public getBar() { 
      // some code here for retrieving the partial
   }
}

然后从另一个控制器操作或甚至另一个lib函数调用它。

代码语言:javascript
复制
 // in a controller action
 ...
 $foo = new MyLib_Controller_Action_Helper_Foo();
 $foo->setBar();
 $bar = $foo->getBar();
 $this->view->bar = $bar;
 ...

希望这能有所帮助

纳马斯特!!

票数 1
EN

Stack Overflow用户

发布于 2012-01-24 01:43:31

如果你想这样做,可能是你的设计出了问题。尝试将所需的功能移至第三个类,例如移至action helper,并从两个控制器调用它。也就是说,应该可以这样做

代码语言:javascript
复制
$a = new A_Controller();
$a->aAction();

代码语言:javascript
复制
A_Controller::aAction();

如果aAction被声明为static。(不过,我两个都没试过。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8942407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档