【问题标题】:CakePHP Themed application and plugin view elements missing缺少 CakePHP 主题应用程序和插件视图元素
【发布时间】:2013-10-21 03:13:28
【问题描述】:

我使用的是CakePHP 2.4.1,安装CakeDC cmets插件后,收到如下提示:

通知 (1024):未找到元素:Elements\cmets\flat\main.ctp [CORE\Cake\View\View.php,第 415 行]

我的基础应用程序正在使用主题。我从 AppController beforeFilter 回调中初始化主题,如下所示:

class AppController extends Controller { 
     function beforeFilter(){
     App::uses('Security', 'Utility');
     $this->theme = 'Slate';  
     $this->layout = 'blog' ;
     } 
}

为了解决这个问题,我尝试了两种方法,一种成功了,另一种没有如下:

  1. 创建\Plugin\Comments\View\Themed\Slate\Elements,然后将\Plugin\Comments\View\Elements的所有内容复制到新目录。但是,此解决方案不起作用
  2. \Plugin\Comments\View\Elements\comments 目录复制到\app\View\Themed\Slate\Elements。该解决方案运行良好。如果我复制到\app\View\Elements,此解决方案也有效。

我从 app/Config/bootstrap.php 初始化插件如下:

CakePlugin::loadAll();

而从控制器为:

public function callback_commentsInitType() {

        return 'flat'; // threaded, tree and flat supported
    }

以下为通知截图:

此外,当我尝试访问http://mywebsite.com/comments 时,它返回关于Action CommentsController::index() could not be found. 的错误,该错误以混合了我的主题布局和默认CakePHP 布局的missy 布局呈现,下面的截图展示了它:

在 CakePHP 手册中没有提到复制插件的视图文件。它应该按原样工作!我不知道为什么插件错过了它的元素?!我怎样才能使这个插件与应用的主题视图正确交互?

【问题讨论】:

    标签: php cakephp plugins cakedc cakephp-2.4


    【解决方案1】:

    如果熟悉,您可以为 cakephp 插件创建主题视图。因此,在您将此插件复制到主题目录中主题的插件目录箱后。 将插件的 View 目录的内容复制到: \app\View\Themed\Slate\Plugin\Comments

    Cake php 会使用这个目录来存放你的插件。 像这个例子 \app\View\Themed\Slate\Plugin\Comments\Elements\cmets\flat.ctp

    【讨论】:

    • 谢谢,这是有用的提示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多