2012-03-27 20 views
0

私はZend Framework 1.11.11アプリケーションを構築しており、ルートとコンテンツデータベースを動かすことを望みます。Zend Framework - Router - エイリアスの作成

私は、データベースから「パス」を取得し、それぞれのコントローラとアクションと共に、ルータにエントリを作成するFrontControllerプラグインを作成しました。

しかし、私は 'エイリアス'を使用したいと思います。通常のURLのように動作しますが、エイリアスです。例えば

、私は次のように作成する場合:次に

// Create the Zend Route 
$entry = new Zend_Controller_Router_Route_Static(
    $route->getUrl(), // The string/url to match 
    array('controller' => $route->getControllers()->getName(), 
      'action' => $route->getActions()->getName()) 
);      
// Add the route to the router 
$router->addRoute($route->getUrl(), $entry); 

例えば/about/ためのルートができ後藤staticController、indexAction。

ただし、このルートのエイリアスを作成するにはどうすればよいですか。だから私が/abt/に行った場合、それは同じコントローラとアクションをレンダリングするだろうか?私に

それは私がページのデータベースから、負荷コンテンツへのページ「識別子」としてルートを使うことになるのと同じルートを再作成しても意味がありません...

答えて

1

することができますあなたは、コメントでそれを更新することができてください - あなたの返信用

$r = My_Route_ArrayStatic(array('about', 'abt'), $defaults); 
+0

ありがとう:

class My_Route_ArrayStatic extends Zend_Controller_Router_Route_Static { protected $_routes = array(); /** * Prepares the array of routes for mapping * first route in array will become primary, all others * aliases * * @param array $routes array of routes * @param array $defaults */ public function __construct(array $routes, $defaults = array()) { $this->_routes = $routes; $route = reset($routes); parent::__construct($route, $defaults); } /** * Matches a user submitted path with a previously specified array of routes * * @param string $path * @param boolean $partial * @return array|false */ public function match($path, $partial = false) { $return = false; foreach ($this->_routes as $route) { $this->setRoute($route); $success = parent::match($path, $partial); if (false !== $success) { $return = $success; break; } } $this->setRoute(reset($this->_routes)); return $return; } public function setRoute($route) { $this->_route = trim($route, '/'); } } 

をして、新しいルータをこのように追加します。静的ルーターを拡張? – Sjwdavies

+0

私はいくつかの余分なコメントを入れました。基本的には、$ pathとURLの配列を一致させるmatch()メソッドをラップします。 –

+0

ありがとうございます。あなたの答えをもっと詳しく説明できたら、私はそれを感謝しますか? – Sjwdavies

関連する問題