CakePHP pages_controller总是使用默认布局

时间:2010-01-15 19:18:05

标签: cakephp layout default

我有一个静态页面,我想要服务,所以我在/ views / pages /目录中创建了一个.ctp。问题是它使用了我不想使用的默认布局。我尝试制作自己的pages_controller并传递$ layout var,但这不起作用。必须有一种方法告诉/ pages /使用另一个layout.ctp。否?

4 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,以为我会报告我的解决方案以防其他人面临同样的问题。

我没有使用网页,但有一个控制器“成员”:

<?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()保持加载默认值。 原来错误是我没有查看/ signup.ctp 。一旦我添加它加载了正确的布局。是一个恍惚的错误,但让我咆哮错误的树,因为标志指向布局问题而不是视图问题。

答案 1 :(得分:0)

要检查的东西

  • 制作自定义pages_controller.php
  • 定义变量$ layout并将其设置为您想要的布局。
  • 确保布局存在于 视图/布局/

答案 2 :(得分:0)

转到以下链接“ lib \ Cake \ Controller ”打开CakeErrorController.php添加你的布局。

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';
    }

答案 3 :(得分:0)

我遇到了同样的问题,所有错误都是误导性的。 我的问题最终是我试图使用没有支持表/模型的控制器,所以我试图在控制器的$ name成员变量中重用其他名称,因为否则会说模型没有'存在。 简而言之,请确保您的控制器名称具有相同命名约定的支持模型对象。