Yii2模型与FormModel

时间:2017-02-13 15:16:21

标签: yii2

我正在寻找我应该使用的情况的解释和用例 FormModel代替Model

让我们举一个例子,经典的Author

class Author extends \yii\db\ActiveRecord
{

public static function tableName()
{
    return 'tbl_author';
}

public function rules()
{
    return [
        [['id'], 'integer'],
        [['name'], 'string', 'min' => 0, 'max' => 64],
        [['name'], 'required'],
        [['age'], 'integer'],
    ];
}

public function attributeLabels()
{
    return [
        'id' => Yii::t('message', 'ID'),
        'name' => Yii::t('message', 'Name'),
        'age' => Yii::t('message', 'Age'),
    ];
}

public function getBook() 
{
  return $this->hasMany(Book::className(), ['id' => 'id_book'])->via('author_book_relation');
}

public function getAuthorBook()
{
  return $this->hasMany(AuthorBook::className(), ['id_author' => 'id']);
}
}

漂亮的常规模特。 Author idnameage属性,通过关系表BooksAuthorBook有关系。

对于此问题涉及的伪类AuthorForm,我认为必须在actionCreateactionUpdate中使用它。

我是否应该将它用于需要插入/更新UserInterface的每种Model类型?

AuthorForm的真正目的是什么?

让我有一个Mode l仅针对那两个可能会被弄脏的案例(actionCreateactionUpdate),而不必担心“真实”模型它处理数据本身? 让我为表单视图指定一些“支持变量”,我可以(例如)定义关系AuthorBook

1 个答案:

答案 0 :(得分:0)

严格地说,在MVC中,Models和FormModel表达了两个不同的概念。第一个(Model)定义了所有关心管理公共属性和方法的类,无论它们的表示(视图)如何,也不管应用程序的相关性(控制器)如何。通常,术语模型也是活动记录的同义词,即与数据建模直接相关的模型,用于在数据库或检索系统中保存数据,而术语FormModel主要用于管理信息“容器”而非直接与dabatabase相关或在存储要求和数据采集需求之间执行经纪功能。在这种意义上,作为典型数据采集模型的Form在(FormModel)中建模,以便于这些操作。

因此,在需要获取或维护给定实体的情况下,申请人经常使用FormModel,因此有利于使用通用组件以获得更高的可重用性和一致性。

这是一个理论上的..在每次面对数据结构,访问方法和ricorrennte验证规则时,实践有助于使用FormModel。一个反复出现的情况是FormModel用于创建更改..一个类别被处理更多

..希望这很有用