Question

Schéma:

CITY
ID (int)
Name (string)
Status (int)

CITY_STATUS
ID (int)
Name (string)
  1. Quand j'affiche une ville (dans la vue Vue), je veux afficher la valeur CITY_STATUS.Name associée, au lieu de la valeur CITY.Status

  2. Quand je mise à jour d'une ville, je veux afficher une liste déroulante de tous CITY_STATUS.Names dans le menu déroulant

Comment puis-je faire en Yii?

Était-ce utile?

La solution

Je suppose que je vais répondre à ce moi-même.

Question 1

Les relations sont plus faciles si vous configurez une clé étrangère dans la base de données d'abord. Pour ce faire, vous devez utiliser MySQL (non SQLite) avec le moteur InnoDB (pas MyISAM), et sur le terrain en question a besoin d'un index sur elle. Ensuite, GII configuration de la fonction des relations automatiquement pour vous. Dans le cas contraire, vous devrez le faire manuellement la fonction dans les relations () du modèle en question.

Pour utiliser une valeur associée dans une vue:

protected / views / [nom du modèle] /view.php, dans le tableau des attributs CDetailView, changement

'Status'

à

array('label'=>'Status', 'value'=>$model->RelationName->Name)

où RelationName est le nom de la relation

Pour utiliser une valeur liée à une vue Index, changement protected / views / [nom du modèle] / _ view.php (note le trait de soulignement), par exemple, dans ce cas, vous changeriez

$data->Status

à

$data->RelationName->Name

Pour utiliser une valeur liée à une vue Admin, dans le CGridView widget appeler, dans le tableau de colonnes, remplacer par exemple

'Status'

avec

array('name'=>'Status', 'header'=>'Status', 'value'=>'$data->RelationName->Name')

(notez l'utilisation des données variables de $, et ne pas dire $ modèle ou dataProvider $). Toujours essayer de comprendre comment trier et filtrer ...

Question 2

Pour utiliser un menu déroulant, dans protected / views / [nom du modèle] / _ form.php:

changement

<?php echo $form->textField($model,'Status'); ?>

à

<?php echo $form->dropDownList($model,'Status', CHtml::listData(Status::model()->findAll(), 'ID', 'Name')); ?>

el chef, vous êtes un gentleman et un érudit.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top