CakePHP pages_controller всегда использует макет по умолчанию - PullRequest
2 голосов
/ 15 января 2010

У меня есть статическая страница, которую я хочу обслуживать, поэтому я создал .ctp в каталоге / views / pages /. Проблема в том, что он использует макет по умолчанию, который я не хочу использовать. Я попытался создать свой собственный pages_controller и передать переменную $ layout, но это не работает. Должен быть способ указать / pages / использовать другой файл layout.ctp. Нет

Ответы [ 4 ]

1 голос
/ 24 апреля 2011

У меня была похожая проблема, я думал, что сообщу о своем решении, если другие столкнутся с той же проблемой.

Я не использовал страницы, но у меня были "члены" контроллера:

<?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 . Как только я добавил, что он загрузил правильную разметку. Это была рассеянная ошибка, но она оставила меня лающим не на том дереве, потому что знаки указывали на проблему с макетом, а не на представление.

0 голосов
/ 05 февраля 2014

У меня была такая же проблема, и все ошибки вводили в заблуждение. В итоге моя проблема заключалась в том, что я пытался использовать контроллер, у которого не было вспомогательной таблицы / модели, поэтому я пытался повторно использовать какое-то другое имя в переменной-члене $ name контроллера, потому что в противном случае было бы сказано, что модель не не существует. Короче говоря, убедитесь, что имя вашего контроллера имеет объект модели поддержки с тем же соглашением об именах.

0 голосов
/ 23 февраля 2013

идет по следующей ссылке " 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';
    }
0 голосов
/ 15 января 2010

несколько вещей для проверки

  • сделать пользовательский pages_controller.php
  • определите переменную $ layout и установите для нее нужный вам макет.
  • убедитесь, что макет существует в просмотров / макет /
...