我是MVC模式的新手。我在谷歌上搜索,剪下代码,玩很多代码。但仍然对控制器和模型之间的最终关系感到困惑。在MVC之前,我的编程风格是这样的。
class Users extend Database{
function __construct(){}
public $id,$name;
public function Save(){
$this->Execute("[Built query using the two member variables]");
}
}
我曾经在HTML中使用这个类作为
$user = new User();
$user->id= "u1";
$user->name = "sarah";
$user->Save();
那么,我该如何将我过去的理解与yii模型控制器的事情绑定起来呢?
我的困惑:
1( 当我用命令为表创建模型时,我没有在模型中为表的每一列找到任何属性定义。相反,在控制器中,这条线是$model->attributes = $_POST['Message']
,这到底是什么?
Isn't it better this way:
$model->message = "hi";
$model->date ="10-10-2011";
$model->save();
很好地理解单线
$model->attributes = $_POST['Message'];
我们必须研究模型类。在模型类(扩展CActiveRecord,通常由gii自动生成(中,我们有两个重要函数,attributeLabels和rules。
attributeLabels列出了所有模型属性(或变量,或我们希望存储在数据库中的列,或简单地列出属性(。
在规则函数中,我们为每个变量/列/属性设置了所有规则。在自动生成的形式中,这些规则直接反映了我们的数据库结构,在某些情况下,我们没有规则,所以只写了一行
array('name', 'safe'),
此规则表示不应用任何规则,将变量保存到数据库中是safa操作。
现在,当我们在控制器中(或任何地方(有$_POST["消息"]时,我们应用单行
$model->attributes = $_POST['Message'];
我们所有发布的值都应用于$model,即我们不需要经过每个属性/属性的验证和分配,只需要经过单行
$model->save();
所有内容都会在验证后保存到数据库中。这就是使用Model(本例中为CActiveRecord(的美妙之处。
$user = new User();
$user->id= "u1";
$user->name = "sarah";
$user->Save();
现在,您应该在控制器操作中编写代码,并且这个
<span><?php echo $user->name ?></span>
是你的观点。
这就是Active Record的用途,你有什么,是模型的逻辑,没有应该放在控制器中的逻辑,阅读关于活动记录模式