我不明白为什么我从我的控制器返回,但它不会打印一个简单的var_dump
。
我遵循的步骤:
模块/控制器/ home.php
$result = modules::run("apis/c_$api/data", $parameters);
var_dump($result); //works
模块的/ 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;
#....
}
为什么会这样?返回$result
但不起作用echo
或var_dump()
该函数有效,因为如果我在案例中注释$result
行,我没有输出。这意味着该案例有效,但即使如此,我也没有得到echo
答案 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
,我不得不推测。