【发布时间】:2014-02-05 06:16:25
【问题描述】:
我有一个要提供的静态页面,因此我在 /views/pages/ 目录中创建了一个 .ctp。问题是它使用了我不想使用的默认布局。我尝试制作自己的 pages_controller 并传递 $layout var,但这不起作用。必须有一种方法告诉 /pages/ 使用另一个 layout.ctp。没有?
【问题讨论】:
我有一个要提供的静态页面,因此我在 /views/pages/ 目录中创建了一个 .ctp。问题是它使用了我不想使用的默认布局。我尝试制作自己的 pages_controller 并传递 $layout var,但这不起作用。必须有一种方法告诉 /pages/ 使用另一个 layout.ctp。没有?
【问题讨论】:
我遇到了类似的问题,我想我会报告我的解决方案以防其他人面临同样的问题。
我没有使用页面,但有一个控制器“成员”:
<?php
class MembersController extends AppController {
var $name = 'Members';
var $helpers = array('Html','Javascript','Form','Time');
var $uses = array();
function index() {
// Works, will load the ajax.ctp layout
// http://localhost/members/index
$this->layout = 'ajax';
}
function signup() {
// Does not work, loads the default.ctp layout
//http://localhost/members/signup
$this->layout = 'ajax';
}
}
?>
函数 index() 正确加载了 ajax 布局,但 signup() 保持加载默认值。 原来的错误是我没有 view/signup.ctp。一旦我添加它加载了正确的布局。这是一个心不在焉的错误,但让我在错误的树上吠叫,因为标志指向布局问题而不是视图问题。
【讨论】:
需要检查的几件事
【讨论】:
public function __construct($request = null, $response = null) {
parent::__construct($request, $response);
$this->constructClasses();
$this->Components->trigger('initialize', array(&$this));
$this->_set(array('cacheAction' => false, 'viewPath' => 'Errors'));
$this->layout='student';
}
【讨论】:
我遇到了同样的问题,所有错误都具有误导性。 我的问题最终是我试图使用没有后备表/模型的控制器,所以我试图在控制器的 $name 成员变量中重用其他名称,否则它会说模型没有不存在。 长话短说,请确保您的控制器名称具有具有相同命名约定的支持模型对象。
【讨论】: