yaf中路由有5種方式,這裏簡單實現正則路由(regex)。php
假定場景,訪問yafok.com/d
,d表明數字,直接到商品詳情頁面.(Product模塊下的product控制器下的show方法),此方法接受一個pid參數。
能夠在對應控制器下經過 $paras=$this->getRequest()->getParams();
接受pid等參數bootstrap
方法1:application.ini中添加數組
[routes] routes.product.type='regex' routes.product.match='#^/([0-9]+)[\/]?$#' routes.product.route.module='Product' routes.product.route.controller='product' routes.product.route.action='show' routes.product.map.1='pid'
bootstrap.php中 ,首先註冊初始化配置app
public function _initConfig(Yaf_Dispatcher $dispatcher) { $this->config = Yaf_Application::app()->getConfig(); Yaf_Registry::set('config', $this->config); }
而後初始化路由this
public function _initRoute(Yaf_Dispatcher $dispatcher) { $router = $dispatcher->getInstance()->getRouter(); $router->addConfig(Yaf_Registry::get('config')->routes); }
PS:你的routes端應該和你當前的環境匹配,好比你設置爲dev環境(yaf.environ=dev)
那麼須要在application.ini中把routes段加上[dev :common :routes]spa
參考連接:http://php.net/manual/zh/yaf-router.addconfig.php.net
方法2:在路由初始化時,用數組添加code
$router = $dispatcher->getInstance()->getRouter(); $route = new Yaf_Route_Regex( '/([0-9]+)/', array('module'=>'Product', 'controller' => 'product', 'action' => 'show' ), array("1"=>'pid') ); $router->addRoute('product', $route);
以上兩種方法都行,實現效果以下:router
貼一下目錄
blog