2016-01-21 87 views
0

我想以一种方式配置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>' 
      ], 
     ], 

管理工作正常,这是我的第一个模块,这样的规则,其余的都已经提到

+0

您是否有其他规则?向我们展示您的urlManager配置。 – soju

+0

您是否尝试将正则表达式从[\ w - ] +更改为其他内容。例如。 \ w +或者只是使用而没有任何表达。 – Hanafi

+0

@soju看到我更新的问题 –

回答

0

也只是帮助其他家伙我有使用以下方法检索$别名的值:

$alias = \Yii::$app->request->get('alias'); 

但绝对不是这个问题的准确答案。我仍然不知道我做错了什么,我没有使用问题中提到的方法获得价值。

0

它wirk! [

   'name' => 'lang_country_seller_catalog', 
       'pattern' => '<lang:\w+>-<country:\w+>/seller/catalog/<module>/<controller>/<action>', 
       'route' => 'seller/catalog/<module>/<controller>/<action>', 
      ], 
[ 
       'name' => 'lang_country_seller_catalog_attributes', 
       'pattern' => '<lang:\w+>-<country:\w+>/seller/catalog/attributes/<module>', 
       'route' => 'seller/catalog/attributes/<module>', 

      ],