CakePHP $ this-> set () не работает в контроллере страниц - PullRequest
1 голос
/ 08 июня 2011

Я разрабатываю с CakePHP, и это мой Page Controller:

<?php
class PagesController extends AppController
{
    var $name = 'Pages';
    var $helpers = array('Html', 'Session');
    var $uses = array();

    function display()
    {
        $path = func_get_args();

        $count = count($path);
        if (!$count) {
            $this->redirect('/');
        }
        $page = $subpage = $title_for_layout = null;

        if (!empty($path[0])) {
            $page = $path[0];
        }
        if (!empty($path[1])) {
            $subpage = $path[1];
        }
        if (!empty($path[$count - 1])) {
            $title_for_layout = Inflector::humanize($path[$count - 1]);
        }
        $this->set(compact('page', 'subpage', 'title_for_layout'));
        $this->render(implode('/', $path));

        $this->loadModel('Curso', 2);

        $select = $this->Curso->query("SELECT * FROM cursos ORDER BY `cursos`.`created` DESC  LIMIT 2;");
        $this->set('cursos', $select);
        //$this->set($select);

    }
}

Но $this->set('cursos', $select); не работает, это ошибка:

Notice (8): Undefined variable: cursos[APP/views/pages/home.ctp, line 36].

Любой может помочьмне

Ответы [ 2 ]

7 голосов
/ 08 июня 2011

Это потому, что вы устанавливаете его после вызова $this->render(). Вызов рендеринга - это когда представление загружается и выполняется.

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

Оба метода работали для меня, я уже использовал.

Первый метод решения для: (потому что вызов рендеринга перед вашим оператором set)

<?php
class PagesController extends AppController
{
    var $name = 'Pages';
    var $helpers = array('Html', 'Session');
    var $uses = array();

    function display()
    {
        $this->loadModel('Curso', 2);

        $select = $this->Curso->query("SELECT * FROM cursos ORDER BY `cursos`.`created` DESC  LIMIT 2;");
        $this->set('cursos', $select);

        //Now put your rest of code

    }
}
?>

Второй метод

<?php
class PagesController extends AppController
{
    var $name = 'Pages';
    var $helpers = array('Html', 'Session');
    var $uses = array();

    function display()
    {

        //put your  code

        $this->loadModel('Curso', 2);

        $select = $this->Curso->query("SELECT * FROM cursos ORDER BY `cursos`.`created` DESC  LIMIT 2;");
        $this->set('cursos', $select);

        try {
            $this->render(implode('/', $path));
        }
        catch (MissingViewException $e) {
            if (Configure::read('debug')) {
                throw $e;
            }
            throw new NotFoundException();
        }


    }
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...