Учитывает ли генератор Yii's CRII Gii отношения моделей? - PullRequest
4 голосов
/ 05 февраля 2012

Я использовал CRUD-генератор Yii's Gii для модели, у которой есть отношение, определенное с другой моделью, ожидая, что он создаст какой-то выпадающий список или другой способ выбора экземпляра связанной сущности, но вместо этого он просто показал обычное текстовое поле ,

Это нормальное поведение Гии или я что-то не так сделал?

Это модели и их отношения:
Model Event: relation 'Venue' => array( self::BELONGS_TO, 'Venue', 'venue' )
Model Venue: relation 'Events' => array( self::HAS_MANY, 'Event', 'venue' )

Я ожидал, что Event CRUD покажет какой-то способ выбора экземпляра Venues.

Ответы [ 2 ]

9 голосов
/ 05 февраля 2012

Это обычное поведение для Gii: при генерации форм (как для CRUD, так и только для форм) все поля ввода становятся текстовыми полями.Таким образом, по умолчанию gii CRUD и генератор форм не учитывают отношения при генерации кода.Мы должны вручную внести изменения в файл представления, а именно _form.php для рассматриваемой модели, для вас это событие.Так что по вашему требованию вы можете внести следующие изменения в этот файл:

/* As you have 'venue' field as the foreign key in the Event model */
<div class="row">
   <?php echo $form->labelEx($model, 'venue'); ?>
   <?php echo $form->dropDownList($model,'venue', CHtml::listData(Venue::model()->findAll(),
      'id', //this is the attribute name(of Venue model- could be the id of the venue) for list option values 
      'name' // this is the attribute name(of Venue model- could be the name of the venue) for list option texts 
       )
    ); ?>
   <?php echo $form->error($model,'venue'); ?>
</div>

Чтобы внести дальнейшие изменения / настройки, читайте подробнее о CActiveForm Надеюсь, это поможет.

1 голос
/ 14 ноября 2013

Используйте Giix, он отлично работает для того, что вы ищете ... никаких ручных изменений не требуется.

...