2012-04-04 2 views
1

Ich verwirre über $ Daten in Blog/Ansichten/Post/_view.php von Blog-Demo von YII-Framework Wie bekomme ich dieses Attribut von $ Daten? Wo finde ich die Definition von $ Daten? Ich finde in Quelle, aber sehe keine Zeile über Autor-> Benutzername, url commentCount?

<div class="post"> 
    <div class="title"> 
     <?php echo CHtml::link(CHtml::encode($data->title), $data->url); ?> 
    </div> 
    <div class="author"> 
     posted by <?php echo $data->author->username . ' on ' . date('F j, Y',$data->create_time); ?> 
    </div> 
    <div class="content"> 
     <?php 
      $this->beginWidget('CMarkdown', array('purifyOutput'=>true)); 
      echo $data->content; 
      $this->endWidget(); 
     ?> 
    </div> 
    <div class="nav"> 
     <b>Tags:</b> 
     <?php echo implode(', ', $data->tagLinks); ?> 
     <br/> 
     <?php echo CHtml::link('Permalink', $data->url); ?> | 
     <?php echo CHtml::link("Comments ({$data->commentCount})",$data->url.'#comments'); ?> | 
     Last updated on <?php echo date('F j, Y',$data->update_time); ?> 
    </div> 
</div> 

Können Sie mir helfen, zu erklären oder geben Sie mir einen Link oder eine Schlüsselarbeit. Danke für alles!

Antwort

3

Siehe Dokumentation für CListView:

Der obige Code erstellt zunächst einen Datenprovider für die Post Active Klasse. Anschließend verwendet es CListView, um jedes Datenelement vom Datenprovider als zurückgegeben anzuzeigen. Die Anzeige erfolgt über die Teilansicht '_post'. Diese Teilansicht wird für jedes Datenelement einmal gerendert. In der Ansicht kann über die Variable $ data auf das aktuelle Datenelement zugegriffen werden. Weitere Informationen finden Sie unter itemView.

Also in Ihrem Kontext, $data ist die Post gerendert.

+0

aber im Modell von Post oder PostController sehe ich nicht Attribute: author-> Benutzername, URL .... – chanhle

+0

@chanhle: Yii liest automatisch das Datenbankschema jeder Active Record-Klasse zugeordnet und erstellt magische Attribute für jede Spalte. Tabellenrelationen, die in der 'relations()' -Funktion angegeben sind, sind auch als magische Attribute verfügbar, aber seien Sie vorsichtig beim Lazy Loading. Also bezieht sich "$ data -> url" auf den Wert des Feldes "url" dieses Posts in der Datenbank und "$ data -> author-> username" ruft den "Autor" des Posts ab und gibt das Feld 'username' zurück . Sehen Sie sich http://www.yiiframework.com/doc/guide/1.1/en/database.ar und http://www.yiiframework.com/doc/guide/1.1/en/database.arr an. – DCoder

+0

Was ist mit '$ data -> tagLinks'? woher kommt das? – Samson

2

$ data ist ein Objekt der Modellklasse mit einer einzelnen Datenzeile. author ist eine Beziehung zu einem anderen Modell des Modells, dessen Instanz $ data ist. $ data-> author-> username Hier ist der Benutzername eine Variable des Modells, auf das der Autor verweist. $ data -> author wird auch als Objekt behandelt. Es führt nur eine relationale Abfrage zu dem Modell aus, auf das der Autor zeigt.

Sie können die Relationen des Modells in relations() -Funktion des Modells sehen. Probieren Sie den Leitfaden von yii Sie werden Ihre Antwort finden.

+0

Beziehung ist dieses hier public function relations() \t { \t \t // HINWEIS: Sie können die Beziehung Namen und die dazugehörigen \t \t anpassen müssen // Klassenname für die Beziehungen, die automatisch unten generiert werden. \t \t return array ( \t \t \t 'Autor' => Array (self :: BELONGS_TO, 'User', 'author_id'), \t \t \t 'Kommentare' => Array (self :: HAS_MANY, 'Kommentar' , 'post_id', 'condition' => 'comments.status ='. Kommentar :: STATUS_APPROVED, 'bestellen' => 'comments.create_time DESC'), \t \t \t 'commentCount' => array (selbst :: STAT , 'Kommentar', 'Post-ID', 'Bedingung' => 'Status ='. Kommentar :: STATUS_APPROVED), \t \t); \t} – chanhle