1

コントローラーから返される理由がわかりませんが、単純なvar_dump.

私が従う手順:

  1. モジュール/コントローラー/home.php

    $result = modules::run("apis/c_$api/data", $parameters);
    var_dump($result); //works
    
  2. modules/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戻り値は機能しますが、またはは機能しないechoという事実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 に答える