2016-08-11 15 views
0

私はマルチモジュールPhalconアプリケーションでいくつかの助けが必要です。私はhttps://github.com/phalcon/mvc/tree/master/multipleの指示に従いましたが、デフォルト以外のモジュールで変数ルーティングが動作しなくなりました。私はマルチモジュールのルーティングのいくつかの理解が必要ですPhalconアプリケーション

$router = new Router(); 
$router->setDefaultModule("admin"); 
$router->setDefaultAction('index'); 

これはadminモジュールのために働く:

$router->add("/:controller/:action/:params", array(
    'module' => 'admin', 
    'controller' => 1, 
    'action' => 2, 
    'params' => 3 
)); 

これはapiモジュールのために働くだけで動作します(モジュールをデフォルトではない)を手動設定:

$router->add("/api", array(
    'module' => 'api', 
    'controller' => 'index' 
)); 

$router->add("/api/user", array(
    'module' => 'api', 
    'controller' => 'user', 
    'action' => 'index' 
)); 

しかし、このウォン」 apiモジュールの場合:

$router->add("/api/:controller/:action/:params", array(
    'module' => 'api', 
    'controller' => 1, 
    'action' => 2, 
    'params' => 3 
)); 

私は/ APIまたは/ API /ユーザーを使用したときに、私はその後、以下のようなエラーが表示されます。

\www\site\public\index.php:104:string 'admin\controllers\ApiController handler class cannot be loaded' 

をしかし、私は/インデックス/ API /ユーザーにアクセスするときにそれが動作します。

$router->add("/api/:controller", array(
    'module' => 'api', 
    'controller' => 1, 
    'action' => 'index', 
)); 
$router->add("/api", array(
    'module' => 'api', 
    'controller' => 'index', 
    'action' => 'index', 
)); 

Phalconは厳密にそれ以外の場合は、それらを解決するつもりはない、指定するルートを必要とする:それはあなたがデフォルトのコントローラ、アクションとルートを逃しているsetDefaultAction

答えて

0

を忘れたモジュールをデフォルトではないためのように見えます。我々はルーティングの高性能のためにこの価格を支払っている。

+0

OK、クリア:

代わりに、モジュールが含まれたパターンを使用することができます。しかし、上記のようなデフォルトのモジュールではなぜうまくいくのでしょうか? –

+0

私はそれがバグかもしれないと思う。 phalconのgithubに関する問題として報告してください – Luke

0

は、名前空間

'namespace' => 'App\Modules\Api\Controllers'] 
0

あなたの最初のパターンが設定しようとキャッチオール管理コントローラへのすべてのルートを送信します。あなたは最後に管理モジュールのルートを入れてみましたか?

$router->add("/:module/:controller/:action/:params", array(
    'module' => 1, 
    'controller' => 2, 
    'action' => 3, 
    'params' => 4 
)); 
関連する問題