cakephp为控制器中的元素指定主题
在cakephp中,如何指定元素使用哪个主题。我正在初始化控制器中的视图对象。我需要将元素内容作为ajax响应传递 控制器: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
$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:谢谢您指出这一点。我已经改正了。请帮忙。