【问题标题】:How to use a helper function in a controller?如何在控制器中使用辅助函数?
【发布时间】:2011-09-20 23:40:55
【问题描述】:

我在 app_helper 文件中编写了一些函数。现在我需要在我的控制器中调用该函数 我如何在 CAKEPHP 中做到这一点

【问题讨论】:

标签: cakephp cakephp-1.3


【解决方案1】:

你不能。*

如果您的函数非常通用以至于可以在视图之外使用,请在 bootstrap.php 中创建它们或在 libs/ 目录中创建自定义库/类。


* 你可以使用App::import('Helper', 'NameOfHelper')ClassRegistry::init 在任何地方加载任何东西,但你真的不应该这样做。 MVC 分离的重点是让您的应用程序井井有条。

【讨论】:

【解决方案2】:
App::uses('HtmlHelper', 'View/Helper');
$yourTmpHtmlHelper = new HtmlHelper(new View());

终于是与 Cakephp 2.3 兼容的版本了

【讨论】:

  • 你为什么要这样做? :) 大多数时候我们应该可以在这里使用 Lib 类而不是 helpers。
  • 我会在控制器组件中使用帮助器进行泛化并在许多控制器中使用......
  • 嘿,不管它是什么,它在这个我几乎不关心的小功能中对我有用。谢谢。
【解决方案3】:
App::import('Helper', 'Forum.Common');
    $commonHelper = new CommonHelper(new View())

【讨论】:

    【解决方案4】:

    如果你想在你的所有控制器中使用一些通用功能,比如视图的帮助器, 你必须使用组件 http://book.cakephp.org/2.0/en/controllers/components.html

    而不是使用 App::import('Helper', 'NameOfHelper'),这样可以保持 MVC 标准正确并且您的应用程序组织良好。

    【讨论】:

      【解决方案5】:

      你可以像下面这样在Controller中使用帮助器

      App::uses('YourHelper', 'View/Helper');
      
      class yourController extends AppController {
      
      public function index(){
          $yourHelper = new YourHelper(new View());
          $yourHelper->yourMethod();
        }
      
      }
      

      【讨论】:

      • 谢谢,那是 util
      【解决方案6】:

      您可以通过这种方式调用辅助函数。假设你的助手是 DemoHelp 并调用辅助函数 call_function() 然后你就可以使用它了。

      App::import('Helper', 'DemoHelp');
      $DemoHelp = new DemoHelpHelper();
      
      $DemoHelp->call_function()
      

      【讨论】:

        【解决方案7】:

        您可以使用Component,它们存储在Controller/Component/

        例如,如果您有Controller/Component/SomeComponent.php 并希望在控制器内的单个操作中即时调用它:

        $this->SomeComponent = $this->Components->load('SomeComponent');
        $this->SomeComponent->someFunction();
        

        【讨论】:

          猜你喜欢
          • 2020-04-13
          • 2015-11-09
          • 2021-05-20
          • 2017-04-27
          • 1970-01-01
          • 2018-07-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多