我正在尝试创建两个非常相似并且可以共享同一个数据库表的 Yii 模型。一个是“问题”,一个是“文章”。他们都有一个标题、正文和作者。“问题”在表中有一个额外的字段,“文章”不需要与之交互,称为 follow_up。
大多数方法和验证是相同的,但有一些细微的差异可以用 if 语句轻松完成。我看到的主要问题是 URL,我想要单独的 URL,例如 site.com/question 和 site.com/article,但让它们都与相同的模型、控制器和视图交互。
如何才能做到这一点?
我正在尝试创建两个非常相似并且可以共享同一个数据库表的 Yii 模型。一个是“问题”,一个是“文章”。他们都有一个标题、正文和作者。“问题”在表中有一个额外的字段,“文章”不需要与之交互,称为 follow_up。
大多数方法和验证是相同的,但有一些细微的差异可以用 if 语句轻松完成。我看到的主要问题是 URL,我想要单独的 URL,例如 site.com/question 和 site.com/article,但让它们都与相同的模型、控制器和视图交互。
如何才能做到这一点?
使用urlManager
Yii 配置中的组件设置 /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>',
),
),
);
当然,您必须根据需要对其进行修改,但这是一般设置。在这里查看更多信息:http ://www.yiiframework.com/doc/guide/1.1/en/topics.url