2016-04-08 18 views
0

Phalcon php kullanıyorum. multi modules architecture'u kullanmayı denemek zorundayım. Ön tarafım ve arka tarafım var. Frontend uygulaması varsayılan modüldür. Ama diğer modüller hakkında bir şey anlamadım. Arka uçta kontrol cihazları tarafından 10 eylem ile 50 kontrol cihazı varsa, arka uç modülü için tüm güzergahları tanımlamalı mıyım?Diğer modüller için Phalcon çoklu modül yolları

cevap

2

tüm denetleyici/eylem efllefltirmeye 50+ farklı yolları tanımlamak gerekmez. Çoğunlukla Phalcon sağlar varsayılan yollarla sopa yapabilirsiniz.

Bu, gereksinimlerinize uyacak bir örnektir. Kesin proje yapınızın ne olduğundan emin değilim. Ancak, sağladığınız örnekte, şu yanıtı deneyin: cevabınız için teşekkürler:

$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

. Bu, denetleyici eylemi için 1, 2, 3 parametreleri nedir? – John

+1

Anlamadım https://docs.phalconphp.com/en/latest/reference/routing.html - hakkında daha fazla bilgi için ... ama bir rota haritası gibi bir şeydir - hangi parçayı tanımlar - nasıl adlandırılır. Örneğin, 1 kontrolördür ve ilk kısımdan alınacaktır "/ ([a-zA-Z \ -] +) /". Rotalarınızı tanımlamanın birkaç yolu var. –

+0

, @BorisDelev tarafından sağlanan bağlantıyı kontrol eder, Phalcon yönlendiricisinin belirli bir URL'yi nasıl çevirdiğini açıklar – Timothy

0

Sizinle aynı senaryoyu kullanıyorum. Tüm olası yolları tanımlamaya gerek yoktur. İşte benim yolları ve bunlar ı CMS alanda gereken bir şey için evrenseldir: arka uç yolları için

// 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' 
     ]);