我不明白为什么我从控制器得到了返回,但它不会打印一个简单的var_dump
。
我遵循的步骤:
-
模块/控制器/home.php
$result = modules::run("apis/c_$api/data", $parameters); var_dump($result); //works
-
模块/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
有效,但echo
或var_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
,我不得不推测。