2016-08-11 4 views
0

Ich brauche etwas Hilfe mit einer Phalcon-Anwendung mit mehreren Modulen. Ich befolgte die Anweisungen wie https://github.com/phalcon/mvc/tree/master/multiple, aber kann das variable Routing, das für das nicht standardmäßige Modul funktioniert, nicht abrufen.Ich brauche etwas Verständnis für das Routing einer Phalcon-Anwendung mit mehreren Modulen

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

Dies funktioniert für die admin Modul:

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

Dies funktioniert funktioniert nur für das api Modul (das nicht die Standardmodul), wenn manuell eingestellt:

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

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

Aber dieses won‘ t arbeiten für das api Modul:

dann bekomme ich einen Fehler wie unten, wenn ich/api oder/api/user:

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

Aber wenn ich Zugriff auf/api/user/Index funktioniert es. Es sieht aus wie für die nicht Standardmodul den setDefaultAction

Antwort

0

vergisst Du fehlst Routen mit Standard-Controller, Aktionen:

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

Phalcon muss Routen genau spezifiziert werden, sonst ist es nicht, sie zu lösen gehen. Wir zahlen diesen Preis für die hohe Leistung des Routing.

+0

OK, klar. Aber warum funktioniert es wie oben beschrieben für das Standardmodul? –

+0

Ich vermute, dass es ein Fehler sein könnte. Bitte melden Sie dies als Problem auf dem Github von Phalcon – Luke

0

Versuchen Namespace

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

Ihr erstes Muster ist ein catch-all, die alle Routen an den Admin-Controller einzustellen sendet. Haben Sie versucht, die Admin-Modul-Route am Ende zu setzen?

Alternativ können Sie ein Muster verwenden, die das Modul enthält:

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