Frage

Ich fange gerade an zu lernen zu benutzen yii, und es hat bereits geschafft, ein paar grundlegende Dinge zu machen.

Nehmen wir an, ich habe zwei einfache Tabellen: "Benutzer" und "Projekte", bei denen die Beziehung 1 zu vielen ist (ein Benutzer kann viele Projekte haben)

Ich habe CRUD mit GII generiert, aber auf der Seite "Benutzer erstellen/bearbeiten" enthält nicht die Dropdown -Down -Stelle, sondern nur ein Textfeld, in dem ich die Benutzer -ID eingeben muss.

Bei der Bearbeitung eines Projekts möchte ich eine Dropdown -Liste haben, in der ich einen Benutzer auswählen kann (damit das Element eine Liste von Benutzernamen anzeigen sollte).

Ich gehe davon aus, dass GII den Controller nicht generieren und Code dafür anzeigen kann

Was wäre die beste Praxis dafür?

Ich habe die Beziehungen bereits wie angewiesen http://www.yiiframework.com/doc/guide/1.1/en/database.arr

public function relations()
{
   return array(
        'projects_rel'=>array(self::BELONGS_TO, 'Users', 'user_id'),
    );
}

und

public function relations()
{
    return array(
        'users_rel'=>array(self::HAS_MANY, 'Projects', 'project_id'),
    );
}
War es hilfreich?

Lösung

Suchen Sie den Beispielcode, um die Benutzerliste zu generieren

<?php
    $form = $this->beginWidget('CActiveForm', array(
                'id' => 'project-form',
                'enableAjaxValidation' => true,
            ));

?>

<?php echo $form->dropDownList($model, 'user_id',
                CHtml::listData(Projects::model()->with('projects_rel')->findAll(), 'id', 'username'),
                array('style'=>'width:150px;')
                ); ?>

Andere Tipps

Checkout dieser GII -Erweiterung zur Erzeugung erweiterter Cruds:

Beide sind in der Lage, Formen mit Beziehungeingaben zu rendern. GTC verwendet ein Beziehungs -Widget für diese Eingaben, die angepasst werden können.

Vergessen Sie nicht, sich zu entziehen

$ this-> Performajaxvalidation ($ Modell)

auf dem Controller oder Sie müssen Artikel anstelle eines erstellt!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top