cakephp为控制器中的元素指定主题

cakephp为控制器中的元素指定主题,php,cakephp,cakephp-2.0,Php,Cakephp,Cakephp 2.0,在cakephp中,如何指定元素使用哪个主题。我正在初始化控制器中的视图对象。我需要将元素内容作为ajax响应传递 控制器: $view = new View($this); $view->layout = 'theme2'; $view->theme = 'newNav'; foreach($ctps as $ctpName) { $ctp[] = $view->elem

在cakephp中,如何指定元素使用哪个主题。我正在初始化控制器中的视图对象。我需要将元素内容作为ajax响应传递

控制器:

$view = new View($this);        
        $view->layout = 'theme2';
        $view->theme = 'newNav';
        foreach($ctps as $ctpName)
        {
             $ctp[] = $view->element($ctpName);
        }
起初,我想把它作为

         $ctp[] = $view->element('../Themed/new/Elements/'.$ctpName);
但它显然不关心元素的目录。因为有些元素在app/View/elements中,有些在app/viewmethemed/new/elements/directory中

请建议

根据Arilia的建议,我现在正在努力

     $this->viewClass = "Theme";
     $this->viewPath = 'Elements';
     $view = new View($this);   
     $view->theme = "new";   
     $view->layout = "theme";

     $ctp = $view->element('userprofile');
     echo json_encode($ctp);
     die;
我正在对这段代码进行ajax调用。它回来了
“Element Not Found:Elements/userprofile.ctp”

我试图开发的是首先呈现基本页面,以便可以缓存它。然后使用ajax调用获取依赖于会话的UI部分,然后替换浏览器上相应的元素

为了实现这一点,我尝试在控制器中获取cakephp元素,对它们进行json编码并将它们返回。上面的代码虽然适用于普通的动态页面,但不适用于ajax调用。Cakephp在这里不知怎么的行为不端

现在,作为一个更好的选择,我已经将代码移动到了视图本身,并从那里回显了json编码。正如预期的那样,它运行良好。代码如下

app/View/Themed/new/Elements/get_ctps.ctp:

<?php
foreach($ctps as $ctpName)
{
      $ctp[] = $view->element($ctpName);
}
echo json_encode($ctp);


这不是通常的情况。但是,它可能会对某些人有所帮助。

我认为该元素采用了您在控制面板中设置的主题。因此,在控制器中,您必须编写
$this->theme='new'
我正在初始化控制器中的视图对象
-您实际上在做什么?这是不正常的(例如,我从未这样做过)。如果指定了主题。请用您正在使用的CakePHP版本标记您的问题。现在,我使用相应的属性。我已经做出了改变,但它仍然不起作用。我对问题进行了编辑,修改了代码。@AD7six:要求在ajax调用中返回html模板,并覆盖浏览器上的显示。为此,我必须在控制器中初始化视图对象。@AD7six:谢谢您指出这一点。我已经改正了。请帮忙。