这是一个结构性问题,我想在这里提出不同意见......
具有以下情况(这是常见的)
这就像Table 1
中项目的详细信息页面一样,在第一个选项卡上我们只转储了该行的所有字段。
在第二个(和第三个)选项卡中,我们将所有项目链接到此项目(它们都具有HAS_MANY关系)。
所以现在添加项目'按钮应该:
一个。转到Table2Controller
,因为我有一个很好的结构,我的Table2Model
只从我的Table2Controller调用
或
B中。从我的Table2Model
Table1Controller
关于A的说明:
- 我在Table2
中添加项目的所有功能都在Table2Controller
中调用,因此我可以将大多数代码设为通用
关于B的正面:
- 更容易找到阅读代码,因为此屏幕上的所有内容都可以在我的Table1Controller
答案 0 :(得分:1)
在第一种情况下,在逻辑部分中拆分模板更为重要。通过这样做,您将能够使用"片段"等模板。通过这种方式,生病了一个"页面"进入一个控制器。示例:AdminController和UserController可能会加载相同的模板,如:
/**
* Action show in userController
*/
public function actionShow(){
$this->render('/user/item');
}
此函数将使用相同的模板,但其adminController
/**
* Action in adminController
*
* @param int $userId
*/
public function actionShowUserDetails($userId){
$this->render('/user/item', array('user' => User::model()->findByPk($userId)));
}
答案 1 :(得分:-1)
为什么你不使用静态方法?例如,在Table2Controller的一个动作中,您可以拥有下一个:
$table1Model=new Table1Model();
然后你可以像这样访问table1中的属性和方法
$table1Model->property1="Hello";
$table1Model->property2="Goodbye";
$table1Model->save();
您可以做的其他事情是直接调用Table1Controller中的方法而不使用init1 Controller1。例如:
Table1Controller::method1InController1($param1,$param2);
祝你好运