代码点火器HMVC控制器不;当从另一个控制器调用时,t打印


Codeigniter HMVC controller doesn't print when called from another controller

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

我遵循的步骤:

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

    $result = modules::run("apis/c_$api/data", $parameters);
    var_dump($result); //works
    
  2. 模块/api/controllers/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;
        #....
    }
    

你知道为什么会这样吗?返回$result有效,但echovar_dump() 无效

更新

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

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

这里是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

您需要返回要打印的内容,以便在呼叫方进行打印。

最明显的原因是case不匹配。

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