Yiiマスター!
ブログがあります。ブログには、著者のリストが記載されたページがあります。著者はAUTHORテーブルに保存されます。私はそれを示すために基本的なYiiウィジェットCListViewを使用しました:
public function actionIndex() {
$dataProvider = new CActiveDataProvider('Author');
$this->render('index', array(
'dataProvider' => $dataProvider,
));
}
そしてviews/author / view.phpより:
$this->widget('zii.widgets.CListView', array(
'dataProvider' => $dataProvider,
'itemView' => '_view',
));
ただし、著者に関する情報に加えて、このリストには、各著者の5つのランダムな関連記事へのURLが含まれている必要があります。記事のタイトルはARTICLEテーブルに保存されます。今、私は醜い解決策(views / authors / _view.php)を使用しています:
<ul class="experts-node-articles-list">
<?php $authorArticles = Article::model()->findAllByAttributes(
array('author_id' => $data->id),
array('limit' => '5'
)); ?>
<?php foreach ($authorArticles as $item) : ?>
<li><a href="#"><?php echo CHtml::encode($item->title); ?></a></li>
<?php endforeach; ?>
</ul>
ビューでモデルを呼び出すため、醜いです。これは、MVCの原則であるIMHOとの競合です。これを真のMVCの方法で実行できますか?モデルの関係やスコープでできるのではないかと思いますが…残念ながらどうしたらいいのかわかりません。