以前の Cakephp-1.2とCakephp-1.3では、次のコードを使用しましたが、問題なく動作します。
$b = $this->requestAction(
array('controller' => 'blocks', 'action' => 'view'),
array('sParams' => $this->params, 'position' => $position, 'return')
);
現在、cakePHP 2.4.1 を使用していますが、これにより次のエラーが発生します。
> Warning (2): rawurlencode() expects parameter 1 to be string, object
> given [CORE\Cake\Routing\Router.php, line 1001]
コントローラーの欠落エラーが続きます:
> Missing Controller
>
> Error: Controller could not be found.
>
> Error: Create the class Controller below in file:
> app\Controller\Controller.php
>
> <?php class Controller extends AppController {
>
> }
CakePHP 1.3 から CakePHP 2.4.1 に変更されたために、この requestAction が通常どおりに機能しなくなったことがわからないことはありますか?
編集: requestAction api documentationには、次の通知があります:
内部では、このメソッドは Router::reverse() を使用して $url パラメータを文字列 URL に変換します。Router::reverse() と互換性のある URL 形式を使用する必要があります。
ただし、Router::reverseメソッドのドキュメントでは、URL 互換フォーマットに関するヒントを見つけることができませんでした。
ちなみに、デフォルトのレイアウトテーマを使用すると、requestAction() を使用しないこの問題は解決しますが、テーマビューとそのレイアウトを使用する必要があります。