当从另一个控制器调用时,Codeigniter HMVC控制器不会打印

时间:2012-04-04 21:47:15

标签: php model-view-controller codeigniter hmvc

我不明白为什么我从我的控制器返回,但它不会打印一个简单的var_dump

我遵循的步骤:

  1. 模块/控制器/ home.php

    $result = modules::run("apis/c_$api/data", $parameters);
    var_dump($result); //works
    
  2. 模块的/ apis /控制器/ c_api1.php

     function data()
     {
    
        #....
        case 'getDataInfo':
            echo 'baa'; //Not working
            $result = simplexml_load_string($this->api1->getDataEntry($parameters['id'], false));
            var_dump($result); //Not working
            break;
        #....
    
    }
    
  3. 为什么会这样?返回$result但不起作用echovar_dump()

    这一事实

    更新

    该函数有效,因为如果我在案例中注释$result行,我没有输出。这意味着该案例有效,但即使如此,我也没有得到echo

2 个答案:

答案 0 :(得分:1)

我认为MX HMVC扩展在通过Modules::run调用时以某种方式阻止模块的输出。

这是一小段MX的Modules.php,你可以看到输出没有发送到浏览器而是返回:

ob_start();
$args = func_get_args();
$output = call_user_func_array(array($class, $method), array_slice($args, 1));
$buffer = ob_get_clean();
return ($output !== NULL) ? $output : $buffer;

据我所知,除非你想修改上面的代码,否则无法向输出调用带有Modules::run的模块的输出。

这就是为什么你能够在调用者控制器上打印$result而不是在被调用的控制器上打印。

您需要返回要打印的内容,以便可以在来电方打印。

答案 1 :(得分:0)

最明显的原因是case没有匹配。

如果没有看到更多api1.php,我不得不推测。