2017-02-13 2 views
0

Я ищу объяснение и использование случаев для ситуации следует использовать FormModel вместо ModelYii2 Модель против FormModel

Давайте мириться пример, классический 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 с атрибутами id, name и , которые имеют отношения к его Books, через таблицу соотношений AuthorBook.

Для псевдокласс AuthorForm, что этот вопрос касается, я полагаю, что его нужно использовать в actionCreate и actionUpdate.

Должен ли я использовать его для каждого типа Model, для которого требуется вставка/обновление UserInterface?

Какова настоящая цель AuthorForm?

Позволить меня есть Mode л, сделанные только для тех случаев, 2 (actionCreate, actionUpdate), которые могут быть испачканы, как я хочу, не беспокоясь о «реальной» модели, которая обрабатывает данные самостоятельно? Позвольте мне указать некоторые «вспомогательные переменные» для вида формы, где я мог бы (например) определить отношение AuthorBook?

+0

Используйте модель формы для подтверждения пользователя представил данные, используя форму. Если форма действительна, передайте данные в вашу модель. Это типичный сценарий. – Andreas

+0

С термином FormModel вы ссылаетесь на модель, не основанную на activeRecord? объясните лучше .. потому что FormModel .. немного бинает – scaisEdge

+0

@scaisEdge самый быстрый пример, который я сейчас имею в документах: http://www.yiiframework.com/doc-2.0/guide-input-forms.html # activerecord-based-forms-activeform С FormModel Я имею в виду класс (AuthorForm), расширяющий мой базовый класс ActiveRecord (Author) – FrancescoC

ответ

0

Строго говоря, в моделях MVC модели и FormModels выражают два разных понятия. Первая (Модель) определяет все классы, которые хотят управлять общими атрибутами и методами независимо от их представления (просмотра) и независимо от корреляций приложений (контроллера) Часто термин «модель» также является синонимом активных записей, то есть модели, непосредственно связанной с моделированием данных для ее сохранения в базе данных или системе поиска, тогда как термин FormModel в первую очередь адресован управлению «контейнером» информации, а не напрямую связанную с dabatabase или выполняющую брокерскую функцию между требованиями к хранению и потребностями сбора данных .. в этом смысле форма, являющаяся типичной моделью сбора данных, моделируется в (FormModel), чтобы облегчить эти операции.

Поэтому часто используется FormModel в тех случаях, когда потребность в приобретении или обслуживании данного объекта является заявителем и поэтому выступает за использование общих компонентов в целях большей повторной возможности и согласованности.

Это теоретический пример. На практике полезно использовать FormModel каждый раз, когда вы сталкиваетесь с структурами данных, методами доступа и правилами проверки правильности. Повторяющийся случай является FormModel для создания изменений .. с один ClassA обрабатывается более

..Hope это полезно

Смежные вопросы