1

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

我遵循的步骤:

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

    $result = modules::run("apis/c_$api/data", $parameters);
    var_dump($result); //works
    
  2. 模块/apis/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返回有效但不是echoor的事实var_dump()

更新

该函数有效,因为如果我在案例内注释$result行,我没有输出。这意味着案例有效,但即便如此我还是不明白echo

4

2 回答 2

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在调用者控制器上而不是在被调用者控制器上打印的原因。

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

于 2012-04-04T22:13:33.750 回答
0

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

没有看到更多的api1.php,我被迫推测。

于 2012-04-04T21:52:59.017 回答