Мне нужно вернуть объект json, который имеет свойство html с отображаемым действием. Можно ли сделать изначально с Phalcon vew?
Пример:
$posts = NewsPost::find(['limit' => 10]); $view = new Phalcon\Mvc\View(); $view->setVar('posts', $posts); $view->setMainView('news/posts'); // not sure if this is correct // retrieve some data ... $response = [ 'html' => $view->render(), 'somedata' => 'somevalues', .... ];
PS Вопрос о phalcon php framework: http://docs.phalconphp.com/ru/latest/api/Phalcon_Mvc_View.html
Сначала необходимо запустить буферизацию вывода:
$view = new Phalcon\Mvc\View(); $view->setVar('posts', $posts); $view->start(); $view->render(); //Pass a controller/action as parameters if required $view->finish(); // retrieve some data ... $response = [ 'html' => $view->getContent(), 'somedata' => 'somevalues', .... ];
Попробуй это
$posts = NewsPost::find(['limit' => 10]); $view = new \Phalcon\Mvc\View(); $view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_LAYOUT); $view->setVar('posts', $posts); $viewData = $view->render('news', 'posts'); // retrieve some data ... $response = [ 'html' => $viewData, 'somedata' => 'somevalues', .... ];
$view = new Phalcon\Mvc\View(); $view->setVar('posts', $posts); $view->start(); $view->render(); //Pass a controller/action as parameters if required $view->finish(); // retrieve some data ... $response = [ 'html' => $view->getContent(), 'somedata' => 'somevalues', .... ];
Не забудьте использовать
$view->setViewsDir(APP_PATH . '/app/views/');
В противном случае вы можете получить пустую строку.