如果我添加视图文件" index.phtml",则只显示视图
如果我想在控制器中显示回声,我必须删除" index.phtml"或禁用控制器中的视图
public function indexAction()
{
$this->view->disable();
echo "this is conntroller";
}
如何在控制器和视图中显示两个输出?
答案 0 :(得分:2)
此代码将显示echo的输出,然后呈现视图:
<?php
class TestController extends \Phalcon\Mvc\Controller
{
public function indexAction()
{
echo 'hello';
$view = new \Phalcon\Mvc\View();
$view->setViewsDir(APPLICATION_PATH . '/app/views/');
$view->start();
$view->render('test', 'index');
$view->finish();
echo $view->getContent();
die();
}
}
或者将视图服务放在DI中:
$di->set('view', function(){
$view = new \Phalcon\Mvc\View();
$view->setViewsDir(APPLICATION_PATH . '/app/views/');
return $view;
}, true);
然后在控制器中使用它:
<?php
class TestController extends \Phalcon\Mvc\Controller
{
public function indexAction()
{
echo 'hello';
$this->view->start();
$this->view->render('test', 'index');
$this->view->finish();
echo $this->view->getContent();
die();
}
}
P.S。但我不推荐这种做法。更好的方法是在视图中分配变量并显示它们。
答案 1 :(得分:1)
试
public function indexAction()
{
$this->view->disable();
echo "this is conntroller";
die; // or exit;
}
希望有所帮助
答案 2 :(得分:0)
我认为控制器不会显示东西。所有操作都应放在控制器中并显示在视图中。
答案 3 :(得分:0)
FirePHP将允许您从PHP(控制器,无论何处)转储,并在浏览器javascript控制台日志中查看结果。唯一的问题是你必须ob_start()
,它会在调试过程中破坏你的重定向。
对于AJAX调试尤其方便,您无法在浏览器中显示新的呈现页面。
我只是将其包含在我的依赖注入中,然后可以使用$this->logger->info()
,就像我使用var_dump()
一样。
/**
* FirePHP Logger for dumping into console.
*/
$di->set('logger', function() {
//$logger = new \Phalcon\Logger\Adapter\Firephp('debug', null);
require_once(__DIR__ . '/../../libs/firephp-core/lib/FirePHPCore/FirePHP.class.php');
ob_start();
$logger = \FirePHP::getInstance(true);
$logger->setEnabled(true); // TODO: Config to disable.
return $logger;
}, true);
如果问题更多是关于如何从生产环境中的控制器和视图输出。简短的回答是:你不会这样做会否定使用组织和分离这些不同类型事物的MVC框架。
注意:从孵化器中注释掉Phalcon适配器,在我的情况下更容易让课程直接工作。