0
我試圖趁Custom URL Rule Classes的Yii中R1.8Yii的R1.8使用自定義URL規則類
我試圖採取一些看起來像單位啓用/視圖/ ID/24,而是顯示在數據庫中由名稱標識的組織名稱(即動態地將www.mysite.com/orgs/view/id/24更改爲www.mysite.com/jaysshop)。不幸的是我沒有得到它的工作。
這裏是我的代碼:
class OrgsUrlRule extends CBaseUrlRule
{
public $connectionID = 'db';
public function createUrl($manager,$route,$params,$ampersand)
{
if ($route==='orgs/view/id') //even tried 'orgs/view' or 'orgs/index'
{
if (isset($params['Name']))
return $params['Name'];
else if (isset($params['Name']))
return $params['Name'];
}
return false;
}
public function parseUrl($manager,$request,$pathInfo,$rawPathInfo)
{
if (preg_match('%^(\w+)(/(\w+))?$%', $pathInfo, $matches))
{
}
return false;
}
}
urlManager:
array(
'class' => 'application.components.OrgsUrlRule',
'connectionID' => 'db',
),
這並不完全清楚你想在這裏做什麼。是客戶輸入orgs/view/id/24網址,並且您想將他重定向到jaysshop?或者你是否試圖在你的代碼中顯示url?我想你可能對createUrl函數有錯誤的想法。當您在您的網站某處使用createUrl功能時,會使用該功能。如果你想實際採取一個網頁瀏覽並想「翻譯」網址,那麼你需要使用parseUrl函數。 – Blizz
@Blizz我明白你在說什麼,但在Yii r1.8(上面鏈接)中提供了這個新功能,它顯示了urlManager處理url重寫。就像您可以在urlManger中使用'events'=>'events/index'一樣,讓用戶輸入www.mysite.com/events而不是www.mysite.com/events/index。當我閱讀它時,自定義URL規則類應該允許你在更廣泛但粒度更細的情況下做同樣的事情。 – enfield
@Blizz在這個論壇的問題,[需要URL的用戶名,類似於Facebook](http://www.yiiframework.com/forum/index.php?/topic/10829-need-of-url-with-username他們弄清楚了我想用變量做什麼,但是在Yii r1.8發佈的附加功能發佈之前,我想了解並使用 – enfield