2016-04-08 10 views
0

私はPhalcon phpを使用しています。私はmulti modules architectureを使ってみる必要があります。私はフロントエンドとバックエンドを持っています。フロントエンドアプリはデフォルトのモジュールです。しかし、私は他のモジュールについて何かを理解していません。バックエンドにコントローラーが10個あり、バックエンドモジュールのすべてのルートを定義する必要があります。他のモジュールのPhalconマルチモジュールルート

答えて

2

すべてのあなたのコントローラ/アクションの組み合わせを一致させるために50+異なるルートを定義する必要はありません。 Phalconが提供する既定のルートを使用することができます。

これはあなたのニーズに合った例です。私はあなたの正確なプロジェクト構造が何であるか分かりません。しかし、あなたが提供した例から、次のように試してみてください:

$router = new Phalcon\Mvc\Router(); 

// set the defaults, so Phalcon knows where to start and where to fall back to 
$router->setDefaultModule('frontend'); 
$router->setDefaultNamespace('Apps\Frontend\Controllers'); 
$router->setDefaultAction("index"); 
$router->setDefaultController("index"); 

$router->removeExtraSlashes(true); 

/* ----------------------------------------------------- */ 
/* ------------------ FRONTEND ROUTES ------------------ */ 
/* ----------------------------------------------------- */ 

$router->add('/([a-zA-Z\-]+)/([a-zA-Z\-]+)/:params', [ 
    'module'  => 'frontend', 
    'namespace' => 'Apps\Frontend\Controllers', 
    'controller' => 1, 
    'action'  => 2, 
    'params'  => 3 
]); 


/* ----------------------------------------------------- */ 
/* ------------------ BACKEND ROUTES ------------------- */ 
/* ----------------------------------------------------- */ 
// to keep your routes.php file clean, 
// you can create a separate router group for your backend routes. 

$backend = new Phalcon\Mvc\Router\Group(); 
$backend->setPrefix('/backend'); 

// for a backend route with a controller 
$backend->add('/([a-zA-Z\-]+)', [ 
    'module'  => 'backend', 
    'namespace' => 'Apps\Backend\Controllers', 
    'controller' => 1, 
    'action'  => 'index' 
]); 

// for a backend route with a controller/action 
$backend->add('/([a-zA-Z\-]+)/([a-zA-Z\-]+)', [ 
    'module'  => 'backend', 
    'namespace' => 'Apps\Backend\Controllers', 
    'controller' => 1, 
    'action'  => 2 
]); 

// for a backend route with a controller/action/parameter 
$backend->add('/([a-zA-Z\-]+)/([a-zA-Z\-]+)/:params', [ 
    'module'  => 'backend', 
    'namespace' => 'Apps\Backend\Controllers', 
    'controller' => 1, 
    'action'  => 2, 
    'params'  => 3 
]); 

// add your backend routes to the main router. 
$router->mount($backend); 
+0

あなたの答えはありがたいです。コントローラーの操作などについて、これらのパラメーター1、2、3は何ですか?私は理解していません。 – John

+1

https://docs.phalconphp.com/en/latest/reference/routing.htmlをチェックしてください - 詳細については...それはルートの地図のようなものです - どの部分に名前を付けるかを定義します。たとえば、1はコントローラで、最初の部分「/([a-zA-Z \ - ] +)/」から取得されます。ルートを記述するにはいくつかの方法があります。 –

+0

@BorisDelevのリンクをチェックしてください。PhalconルーターがどのようにURLを翻訳するのかを説明しています – Timothy

0

私はあなたと同じシナリオを使用しています。すべての可能なルートを定義する必要はありません。ここに私のルートであり、彼らは私がCMSエリアに必要なもののために普遍的なものである:あなたのバックエンドルートの

// Frontend routes 
// .... 

// CMS Routes 
$router->add('/cms', [ 
     'module' => 'backend', 
     'controller' => 'admin', 
     'action' => 'login' 
     ]); 

$router->add('/cms/:controller/:action/([0-9]+)/:params', [ 
     'module' => 'backend', 
     'controller' => 1, 
     'action' => 2, 
     'id' => 3, 
     'params' => 4 
     ])->setName('backend-full'); 

$router->add('/cms/:controller/:action', [ 
     'module' => 'backend', 
     'controller' => 1, 
     'action' => 2 
     ])->setName('backend-short'); 

$router->add('/cms/:controller', [ 
     'module' => 'backend', 
     'controller' => 1, 
     'action' => 'index' 
     ]); 
関連する問題