хранение визуализированного элемента в переменной в CakePHP - PullRequest
1 голос
/ 26 апреля 2011

У меня возникли некоторые проблемы при попытке "захватить" визуализованный HTML-код elmenet в торт php.

Скажем, у меня есть элемент с именем "message.ctp"

Я хотел бы сделать что-то вроде следующего:

Выполнение запроса $ .getJSON к действию в контроллере, скажем, jsonAction (). В рамках этого действия я выполню некоторые обновления БД и верну строку json. Я хотел бы сохранить HTML является частью объекта JSON. Выполнимо?

function jsonAction() {
    //Do DB update
    if(db update was ok) {
        $response = array("completed" => true, "html" => $this->render("message"));
    } else {
       $response = array("completed" => false);
    }
    echo json_encode($response);
}

То, что сейчас происходит, заключается в том, что метод рендеринга отображает отображаемое значение вместо его возврата.

В любом случае, я могу этого достичь?

Спасибо

С уважением Gabriel

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

Забудьте элементы на время.

Прежде всего вы должны отделить все, что включает в себя вывод данных из контроллера (будь то HTML, JSON или что-то еще).

Для каждого действия контроллера у вас должно быть соответствующее представление. Таким образом, для действия контроллера jsonAction у вас должны быть имена представлений json_action.ctp (в соответствующей папке, например, если jsonAction находится в MessagesController, создайте папку с именем /view/messages/json_action.ctp).

Установите переменную из контроллера, отобразите ее в поле зрения, и все готово. Не забудьте $this->layout = 'empty' с контроллера, чтобы вы отображали только то, что у вас есть на виде.

Обычно вам следует переделать учебники по CakePHP и перечитать книгу, чтобы лучше понять шаблон MVC (Model-View-Controller) и структуру CakePHP.

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

Ты имеешь в виду это?

$myRenderedHtml = $this->element('message');
                         ^^^^^^^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...