如果我添加视图文件"索引。,只显示视图
如果我想在控制器中显示echo,我必须删除"index"。或禁用控制器中的视图
public function indexAction()
{
$this->view->disable();
echo "this is conntroller";
}
如何在控制器和视图中显示输出?
下面的代码将显示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();
}
}
或者把view service放到DI中:
$di->set('view', function(){
$view = new 'Phalcon'Mvc'View();
$view->setViewsDir(APPLICATION_PATH . '/app/views/');
return $view;
}, true);
然后在controller:
中使用<?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();
}
}
注:但是我不推荐这种方法。更好的方法是在视图中分配变量并显示它们。
try
public function indexAction()
{
$this->view->disable();
echo "this is conntroller";
die; // or exit;
}
希望有所帮助
我认为控制器不应该显示东西。所有的动作都应该放在控制器中,并显示在视图中。
FirePHP将允许您从PHP(控制器,任何地方)转储并在浏览器的javascript控制台日志中查看结果。唯一的问题是你必须使用ob_start()
,这会在调试期间破坏你的重定向。
特别适合在浏览器中不显示新渲染页面的AJAX调试。
我只是把它包含在我的依赖注入中,然后可以像使用var_dump()
一样使用$this->logger->info()
。
/**
* 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框架来组织和分离这些不同类型的东西。
注意:从孵化器中注释掉费尔康适配器,更容易让类直接在我的情况下工作。