CakePHP错误中的自定义帮助程序

CakePHP错误中的自定义帮助程序,cakephp,helper,cakephp-2.1,view-helpers,Cakephp,Helper,Cakephp 2.1,View Helpers,相当有经验的程序员,但刚接触CakePHP 2.1,我每天都在按照手册的要求努力让自定义助手工作: 我还没有找到答案,如果有蛋糕方面的专业知识,我将不胜感激 app/helper/EntriesHelper.php中的我的助手文件: App::uses('AppHelper', 'View/Helper'); class EntriesHelper extends AppHelper { public function __construct(View $view, $setting

相当有经验的程序员,但刚接触CakePHP 2.1,我每天都在按照手册的要求努力让自定义助手工作:

我还没有找到答案,如果有蛋糕方面的专业知识,我将不胜感激

app/helper/EntriesHelper.php中的我的助手文件:

App::uses('AppHelper', 'View/Helper');

class EntriesHelper extends AppHelper {

    public function __construct(View $view, $settings = array()) {
        parent::__construct($view, $settings);
    }

    public function spanWrapper($content) {

        if(substr($content,0,1) == "@") {
            return "<span class='label label-warning'>$content</span>";
        }
        else if(substr($content,0,1) == "#") {
            return "<span class='label label-default'>$content</span>";
        } 
        else if (substr($content,0,4) == "http" || substr($content,0,3) == "www") {
            return "<span class='label'>$content</span>";
        }

        return $content;

    }

}
但我的观点是失败的:

$this->Entries->spanWrapper($entry['Entry']['title']);
错误如下:

Notice (8): Undefined property: View::$Entries [CORE/Cake/View/View.php, line 806]
Fatal error: Call to a member function spanWrapper() on a non-object in <path removed>/app/View/Entries/index.ctp on line 35
注意(8):未定义的属性:View::$Entries[CORE/Cake/View/View.php,第806行]
致命错误:对第35行/app/View/Entries/index.ctp中的非对象调用成员函数spanWrapper()
所以未定义属性的通知可能是导致致命错误的原因。。。但是为什么会这样,如果它是按照食谱来实现的呢


Darren

正确的语法是
$this->helpers[]='spanWrapper'在方法中加载帮助程序时,或者将其添加到公共
$helpers
数组中。

正确的语法是
$this->helpers[]='spanWrapper'
在方法中加载帮助程序时,或将其添加到公共
$helpers
数组中。

如果要在整个控制器中使用帮助程序,应将其添加到
EntriesController中的
$helpers
数组中:

class EntriesController extends AppController {

  public $helpers = array('Form', 'Html', 'Js', 'Time', 'Entries');

  /* ... */

}
如果您在整个应用程序中需要帮助器,您可以使用相同的方法将其添加到
AppController

如果在另一端,您只需要在一个视图中使用它,您可以选择仅在那里动态加载它。在您的视图中,在第一次使用帮助器之前,请调用:

$this->Helpers->load('Entries');

这三种方法都在CakePHP手册中。

如果您想在整个控制器中使用帮助程序,应将其添加到
EntriesController中的
$helpers
数组中:

class EntriesController extends AppController {

  public $helpers = array('Form', 'Html', 'Js', 'Time', 'Entries');

  /* ... */

}
如果您在整个应用程序中需要帮助器,您可以使用相同的方法将其添加到
AppController

如果在另一端,您只需要在一个视图中使用它,您可以选择仅在那里动态加载它。在您的视图中,在第一次使用帮助器之前,请调用:

$this->Helpers->load('Entries');

这三种方法都在CakePHP手册中。

除了最好使用“SpanWrapper”来保持一致性(CamelCase)之外,啊。我懂了。谢谢成功了。我想我已经在烹饪书中使用了这个例子,我将检查他们的代码是否也可能是错误的。此外,最好是“SpanWrapper”来保持一致(CamelCase)啊。我懂了。谢谢成功了。我想我已经在食谱中使用了这个例子,我会检查他们的代码是否也错了。或者只是升级到2.2-那么助手应该自动延迟加载:)或者只是升级到2.2-那么助手应该自动延迟加载:)