2016-06-30 12 views
2

Ich versuche, in Phalcon einzurichten Routing, im Anschluss an dieser URL-Struktur:Routing in Phalcon - Parameter vor dem Ende der Route

www.example.com/language/register/

Das ist mein routes.php:

use Phalcon\Mvc\Router; 

$router = new Router(); 

$router->add(
    '/[a-z]{2}/register/', 
    array(
     'controller' => 'index', 
     'action' => 'register', 
     'lang' => 1 
    ) 
); 

return $router; 

Und das ist mein Indexcontroller:

class IndexController extends ControllerBase 
{ 
    public $lang; 

    public function indexAction() 
    { 

    } 

    public function registerAction($lang) 
    { 
     $lang = $this->dispatcher->getParam('lang'); 
     echo "Register ($lang)"; //test 
    } 

} 

Deshalb, wenn ich www.example.com/fr/register/ besuchen sollte, es würde mich an die index Controller nehmen, die register Aktion, mit den lang Parametern fr.

Die Variable $lang wird jedoch nicht auf der Seite angezeigt.

Ich kann in der Phalcon documentation sehen, dass Sie den Platzhalter /:params nicht überall verwenden können, aber am Ende der Route (URL), aber das ist ein regulärer Ausdruck im Router benannt wird?

Antwort

3

Du hast es richtig, Sie Ihre Klammern nur vergessen haben, um [a-z]{2}

$router->add(
    '/([a-z]{2})/register/', // added brackets here 
    array(
     'controller' => 'index', 
     'action' => 'register', 
     'lang' => 1 
    ) 
); 

Jetzt können Sie Ihre lang über

$lang = $this->dispatcher->getParam('lang'); 
+2

Hier zuzugreifen, ist eine kürzere Version zusätzlich zu Timothy Antwort: '$ Router -> addiere ('/ {lang: [az] {2}}/register', 'Index :: register'); ' –

+1

@NikiMihaylov, ich bevorzuge auch die kurze Version! Aber manchmal ist es weniger lesbar. – Timothy

Verwandte Themen