Yii在什么控制器中放置具体动作

时间:2014-07-24 08:36:02

标签: php yii

这是一个结构性问题,我想在这里提出不同意见......

具有以下情况(这是常见的)

enter image description here

这就像Table 1中项目的详细信息页面一样,在第一个选项卡上我们只转储了该行的所有字段。

在第二个(和第三个)选项卡中,我们将所有项目链接到此项目(它们都具有HAS_MANY关系)。

所以现在添加项目'按钮应该:

一个。转到Table2Controller,因为我有一个很好的结构,我的Table2Model只从我的Table2Controller调用

B中。从我的Table2Model

中拨打我的Table1Controller

关于A的说明: - 我在Table2中添加项目的所有功能都在Table2Controller中调用,因此我可以将大多数代码设为通用

关于B的正面: - 更容易找到阅读代码,因为此屏幕上的所有内容都可以在我的Table1Controller

中找到

2 个答案:

答案 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);
祝你好运