我想以一種方式配置Yii2 url管理器,如果在url中跳過控制器名稱,它應該調用默認的控制器進行操作。我已經設法實現這個沒有行動參數。但在動作名稱中使用參數時會卡住。模塊和參數的Yii2 url規則
這裏是我的路線配置:
return [
'catalog/category/<alias:[\w-]+>' => 'catalog/default/category',
'catalog/<action:\w+>' => 'catalog/default/<action>',
];
控制器的文件:
namespace app\modules\catalog\controllers;
use yii\base\Controller;
use app\modules\catalog\models\Categories;
class DefaultController extends Controller
{
public function actionShopbydepartment()
{
$data['categories'] = Categories::findParentSubHierarchy();
return $this->renderPartial('shopbydepartment', $data);
}
public function actionCategory($alias = null)
{
die(var_dump($alias));
$data['category'] = Categories::findCategoryBySlug($alias);
return $this->render('category', $data);
}
}
,當我訪問以下網址它完美地加載。 http://domain.com/index.php/catalog/shopbydepartment
但是,當我訪問以下網址叫正確的功能,但沒有通過$別名值: http://domain.com/index.php/catalog/category/appliances
UPDATE:
我用以下方法進行模塊明智url規則聲明: https://stackoverflow.com/a/27959286/1232366
這裏是我在主配置文件中有:
'rules' => [
[
'pattern' => 'admin/<controller:\w+>/<action:[\w-]+>/<id:\d+>',
'route' => 'admin/<controller>/<action>'
],
[
'pattern' => 'admin/<module:\w+>/<controller:\w+>/<action:[\w-]+>/<id:\d+>',
'route' => 'admin/<module>/<controller>/<action>'
],
],
管理工作正常,這是我的第一個模塊,這樣的規則,其餘的都已經提到
您是否有其他規則?向我們展示您的urlManager配置。 – soju
您是否嘗試將正則表達式從[\ w - ] +更改爲其他內容。例如。 \ w +或者只是使用而沒有任何表達。 –
Hanafi
@soju看到我更新的問題 –