Phalcon,如何在控制器和视图中获得输出?

时间:2014-07-07 04:26:40

标签: php phalcon

如果我添加视图文件" index.phtml",则只显示视图

如果我想在控制器中显示回声,我必须删除" index.phtml"或禁用控制器中的视图

public function indexAction()
{
    $this->view->disable();
    echo "this is conntroller";
}

如何在控制器和视图中显示两个输出?

4 个答案:

答案 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适配器,在我的情况下更容易让课程直接工作。