2017-03-14 31 views
0

我需要做一個url地址,看起來像網站/用戶/用戶名其中用戶名來自數據庫。我試圖通過在我的動作函數中放置一個$ user變量作爲參數來達到它,結果如下:website/action?user = username。但它看起來有些陰沉而醜陋。我如何獲得理想的結果?如何在Yii2中製作正確的url地址

回答

1

首先,您需要在config/web.php中配置url規則。

[ 
'components' => [ 
    'urlManager' => [ 
     'enablePrettyUrl' => true, 
     'showScriptName' => false, 
     'enableStrictParsing' => false, 
     'rules' => [ 
      "user/<username:\w+>"=> "controller/action" 
     ], 
    ], 
], 

]

而且在規則陣列添加URL匹配條件像 "user/<username:\w+>"=> "controller/action"

創建。在網絡文件夾htaccess文件的URL下條件

RewriteEngine on 
# If a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# Otherwise forward it to index.php 
RewriteRule . index.php 

併產生網址助手類或HTML類網址,如下面

echo Url::to(['controller/action', 'username' => 'jack']); 

Or 

echo Html::a('Profile', ['controller/action', 'username' => 'jack'], ['class' => 'profile-link']) 

注: -控制器名稱,操作名稱和用戶名應與匹配網址條件。我們在規則數組中定義的。