Yiiは、\ applicationから始まり、組み込みのautoload設定のような物理ディレクトリ構造に従わなければならない、名前空間のための直感的な命名規則を使います。 お使いのベースMyControllerクラスが保護/コントローラ/内にある場合、それはサブディレクトリ「のようなリクエストを作成するには、保護/コントローラ/サブディレクトリ内namespace application\controllers;
<?php
namespace application\controllers;
class MyController extends \CController
{
// actions
}
と子MyController/
<?php
namespace application\controllers\subdir;
class MyController extends \application\controllers\MyController
{
// actions
}
を使用する必要があります/ my "の場合は、クラスファイルが含まれた直後にCWebApplication::createController()
に次のコードを追加する(またはサブクラスで継承する)必要があります。
if(!class_exists($className,false))
require($classFile);
+ if(!class_exists($className,false))
+ $className = '\\application\\controllers\\' . str_replace('/', '\\', $controllerID . $className);
if(class_exists($className,false) && is_subclass_of($className,'CController'))
{
$id[0]=strtolower($id[0]);
return array(
new $className($controllerID.$id,$owner===$this?null:$owner),
$this->parseActionParams($route),
);
}
controllerNameSpace
をCWebApplication
に設定した場合は、\\application\\controllers\\
をハードコードする代わりにその値を使用することもできます。
これは、スタックオーバーフローでよく尋ねられると思います。もしそうなら、私は賞金を返還し、質問を移行することができます。あなたが同意すれば私に知らせてください。 – ChrisF
これは本当にSOの材料のように見えます。 –
心配する必要はありません! – ozz