【问题标题】:Have one controller function call a different controller function in CakePHP 1.2在 CakePHP 1.2 中让一个控制器函数调用不同的控制器函数
【发布时间】:2011-06-01 07:43:03
【问题描述】:

如何让我的Search 控制器在内部使用doSearch() 函数在我的Titles 控制器中调用getTitles() 函数?

【问题讨论】:

  • 一件事是将它移动到 app_controller 中,但让我们尝试不这样做

标签: cakephp controller cakephp-1.2


【解决方案1】:

简短的回答是,你不应该这样做。您应该将其移至您的 Title 模型,或者将其放入组件或助手中以供重用。

如果你确定要直接调用控制器,Cake 确实为此提供了一个方法

http://book.cakephp.org/2.0/en/controllers.html#Controller::requestAction

【讨论】:

  • 你说得对,它应该是一个组件(它与数据库无关,只是一些 php 处理)但你也可以像这样 App::import('Controller','Titles'); $title_controller = new TitlesController();
  • @chris 你不应该将你的控制器导入另一个控制器。对我来说感觉不“正确”。组件将是我认为最好的方式。
  • 它对我来说也很好,但如果我必须在另一个控制器上设置一个变量,它就不会设置。我也尝试过会话。例如在titlesController的这种情况下,如果我必须设置一个变量 $this->set('s', 's');它不工作。和类似的 $this->Session->write('s', 's');不工作。有什么帮助吗?
  • @GovindTotla 您应该创建一个新问题来问这个问题。请提供所有详细信息。
【解决方案2】:

没有理由去另一个控制器。

控制器应该主要从模型中调用方法。所以应该有一个包含你需要的方法的Title Model。

如果您需要更多帮助,请发布您的代码。

【讨论】:

    【解决方案3】:

    所以答案是:

    $this->requestAction('/controller/action/params');
    

    【讨论】:

      【解决方案4】:

      使您想要重用组件的功能并不总是像 Cakephp 那样工作得很好,没有引入 Models 和 find() 以及 set->$this 等。另一种方法是让您的核心功能成为核心功能然后返回 $results,调用这个函数,如 $results =$this->function_within_controller();因此您可以通过这种方式重用该功能。我有时在尝试使用组件时会遇到很多错误,在 Cakephp 中,组件非常适合使用独立的 php 脚本和代码。

      【讨论】:

        猜你喜欢
        • 2017-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-25
        相关资源
        最近更新 更多