Yii-一个控制器多个URL

Yii-一个控制器多个URL,yii,Yii,我正在尝试创建两个非常相似的Yii模型,它们可以共享同一个数据库表。一个是“问题”,一个是“文章”。他们都有一个标题、正文和作者“问题”在表中有一个额外的字段,“文章”不需要与之交互,称为跟进 大多数方法和验证都是相同的,但是有一些微小的差异可以用if语句轻松地完成。我看到的主要问题是URL,我想要单独的URL,如site.com/question和site.com/article,但它们都与相同的模型、控制器和视图交互 如何做到这一点?使用Yii配置中的urlManager组件设置/artic

我正在尝试创建两个非常相似的Yii模型,它们可以共享同一个数据库表。一个是“问题”,一个是“文章”。他们都有一个标题、正文和作者“问题”在表中有一个额外的字段,“文章”不需要与之交互,称为跟进

大多数方法和验证都是相同的,但是有一些微小的差异可以用if语句轻松地完成。我看到的主要问题是URL,我想要单独的URL,如site.com/question和site.com/article,但它们都与相同的模型、控制器和视图交互


如何做到这一点?

使用Yii配置中的
urlManager
组件设置/article和/question到同一控制器的路由,然后使用不同的操作或不同的参数来区分两者。既然你说它们几乎是一样的,我建议使用不同的参数和一个动作,如下所示:

array(
  ...
  'components' => array(
    ...
    'urlManager' => array(
      'question/<\d+:id>' => 'mycontroller/myaction/type/question/id/<id>',
      'article/<\d+:id>' => 'mycontroller/myaction/type/article/id/<id>',
    ),
  ),
);
数组(
...
“组件”=>数组(
...
“urlManager”=>数组(
'question/'=>'mycontroller/myaction/type/question/id/',
“article/”=>“mycontroller/myaction/type/article/id/”,
),
),
);
当然,您必须根据需要修改它,但这是一般设置。请查看此处以了解更多信息: