我想以一种方式配置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看到我更新的问题 –