Yii - gewusst wie: abrufen von Modell-Daten in ein layout-Seite?
Möchte ich zur Liste einige der Kategorien, Namen auf meinem layout main.php Seite.
Da das layout muss nicht alle zugehörigen controller oder Modell, ich möchte erstellen Sie eine statische Methode, wie dieses Modell Kategorie:
public static function getHeaderModels()
{
//get all models here
return $models;
}
und dann in das Haupt-layout
<?php
$models = Category::getHeaderModels();
foreach($models as $model)
{
//....
}
?>
Meine Frage ist eine ganz einfache:
Wie kann ich abrufen dieser Kategorie-Namen, die aus dem Modell ?
Hier ist das vollständige Modell:
class Category extends CActiveRecord {
public static function model($className=__CLASS__) {
return parent::model($className);
}
public function tableName() {
return 'category';
}
public function rules() {
return array(
array('parent_id', 'numerical', 'integerOnly' => true),
array('name', 'length', 'max' => 255),
array('id, parent_id, name', 'safe', 'on' => 'search'),
);
}
public function relations() {
return array(
'users' => array(self::MANY_MANY, 'User', 'categories(category_id, user_id)'),
);
}
public function scopes()
{
return array(
'toplevel'=>array(
'condition' => 'parent_id IS NULL'
),
);
}
public function attributeLabels() {
$id = Yii::t('trans', 'ID');
$parentId = Yii::t('trans', 'Parent');
$name = Yii::t('trans', 'Name');
return array(
'id' => $id,
'parent_id' => $parentId,
'name' => $name,
);
}
public function search() {
$criteria = new CDbCriteria;
$criteria->compare('id', $this->id);
$criteria->compare('parent_id', $this->parent_id);
$criteria->compare('name', $this->name, true);
return new CActiveDataProvider(get_class($this), array(
'criteria' => $criteria,
));
}
public static function getHeaderModels() {
//what sintax should I use to retrieve the models here ?
return $models;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann diese Antwort kann dir helfen. Zuerst müssen Sie erstellen ein Widget, so dass Sie können es verwenden, effektiver.
Zuerst ein neues widget Erstellen. Lassen Sie sagen, der name ist
CategoryWidget
. Setzen Sie dieses widget unter Komponenten-Verzeichnisprotected/components
.Dann erstellen Sie eine Ansicht für dieses widget. Der name der Datei ist category.php.
Legen Sie es unter
protected/components/views
category.php
Dann rufen Sie dieses widget aus der main-layout.
main.php
Wenn ich mich nicht Irre, du kannst auch eine variable zur Verfügung, die in einer Ansicht auf dem layout.
Sie tun es einfach aus der Sicht, dass hat deine variable.
Das ist der Haken: Sie müssen deklarieren Sie die variable erhalten Ihren Wert im controller, so wie hier:
Danach ordnen Sie Ihr Modell oder was auch immer auf diese öffentliche variable innerhalb deiner Sicht,
wie diese:
Nachdem Sie zugewiesen haben Ihre Modell-Daten-controller das Attribut public,
man kann leicht zeigen Sie Sie in Ihrem layout z.B.
Yii tut dies bereits durch die Zuordnung von Menüpunkten zu column2 sidebar-Menü, aus dem Blick, wie diese:
Können Sie es in alle erzeugen/aktualisieren von Ansichten, gii crud erstellt.