日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php前缀路由器的,php – 使用前缀和Zend_Controller_Router_Route

發(fā)布時(shí)間:2025/3/15 php 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php前缀路由器的,php – 使用前缀和Zend_Controller_Router_Route 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在現(xiàn)有的Zend Framework網(wǎng)站上,幾乎沒(méi)有控制器,沒(méi)有模塊,我需要在默認(rèn)路由中添加一些前綴.

例如,我目前有:

/products

/products/id/1

/training

/commonpage

我想添加一個(gè)產(chǎn)品線級(jí)別,而不會(huì)在x模塊中復(fù)制我的控制器(我將使用_getParam請(qǐng)求我的控制器內(nèi)的正確的產(chǎn)品線).

所以我的新路徑將是:

/line1/products

/line1/products/id/1

/line2/training

/commonpage

我到目前為止所嘗試的是這條路線(位于我的Bootstrap文件中):

protected function _initRoutes()

{

$router = Zend_Controller_Front::getInstance()->getRouter();

$router->addRoute('productLineRoute', new Zend_Controller_Router_Route(

':line/:controller/:action',

array('module' => 'default'),

array('line' => '(' . implode('|', Zend_Registry::getInstance()->constants->lines) . ')')

));

}

但沒(méi)有任何成功(它給了我一個(gè)404).

在這些條件下,如何構(gòu)建與所有uri匹配的單個(gè)路由:

> uri的前綴匹配我的產(chǎn)品線數(shù)組中的一個(gè)值

>該路由僅在允許以“產(chǎn)品線路”方式訪問(wèn)控制器的情況下才有效 – 通過(guò)包含我的控制器名稱的數(shù)組,例如

UPDATE

好的,我設(shè)法真正接近我正在試圖用這個(gè)代碼:

protected function _initConstants()

{

$registry = Zend_Registry::getInstance();

$registry->constants = new Zend_Config( $this->getApplication()->getOption('constants') );

$uri = ltrim($_SERVER['REQUEST_URI'], '/');

$product_line = substr($uri, 0, strpos($uri, '/'));

if(!empty($product_line) && in_array($product_line, Zend_Registry::getInstance()->constants->lines->toArray()) &&

$product_line != Zend_Registry::getInstance()->constants->lines->get(0)) {

$registry->product_line = $product_line;

} elseif(!isset($registry->gamme)) {

$registry->product_line = Zend_Registry::getInstance()->constants->lines->get(0);

}

}

protected function _initRoutes()

{

$router = Zend_Controller_Front::getInstance()->getRouter();

$registry = Zend_Registry::getInstance();

$router->addRoute('productLineRoute', new Zend_Controller_Router_Route(

':line/:controller/:action/*',

array(

'module' => 'default', 'action' => 'index',

'line' => (isset($registry->product_line)) ? $registry->product_line : Zend_Registry::getInstance()->constants->lines->get(0)

),

array(

'line' => '(' . implode('|', Zend_Registry::getInstance()->constants->lines->toArray()) . ')',

'controller' => '(' . implode('|', array('products', 'training')) . ')'

)

));

}

有了我可以訪問(wèn)/ line1 / products但不是/ line1 / commonpage,這是我想要的 – 所以控制器約束是非常好的.您可以看到我在Zend注冊(cè)表中添加產(chǎn)品線名稱,所以當(dāng)我在模板中使用URL View Helper時(shí),它被保存(這樣我就不必編輯我的所有模板來(lái)添加我的幫助器中的product line參數(shù)調(diào)用).

我現(xiàn)在的問(wèn)題是關(guān)于這個(gè)幫助:似乎我的控制器約束只是被忽略.當(dāng)我在我的模板中這樣做:

My link

我結(jié)束了這個(gè):

My link

所以添加了產(chǎn)品線,盡管事實(shí)上這不允許我的路由器的控制器約束.

總結(jié)

以上是生活随笔為你收集整理的php前缀路由器的,php – 使用前缀和Zend_Controller_Router_Route的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。