Разработка сайта на Yii с нуля. Урок 9. Выборка статей определённого автора.

Разработка сайта на Yii с нуля. Урок 9. Выборка статей определённого автора. В этом уроке добавляем вместо имени автора поста ссылку на список всех его статей. Удобно, если несколько авторов. Посетитель сможет выбрать только определенного автора, который ему нравится и смотреть его публикации.

В config/main.php добавим правило для URL в компонент urlManager:

'authors/<username:.*?>'=>'post/index',

Далее в контроллер PostController.php добавим в actionIndex в массив with атрибут author, чтобы посты выбирались с автороами:

public function actionIndex()
{
$criteria=new CDbCriteria(array(
'condition'=>'status='.Post::STATUS_PUBLISHED,
'order'=>'update_time DESC',
'with'=>array('commentCount', 'author'), 
...

и тут же:

if(isset($_GET['username']))
$criteria->addSearchCondition('username',$_GET['username']);

В модель Post.php добавим функцию создания ссылки на alias автора:

public function getAuthorLink()
{
return CHtml::link(CHtml::encode($this->author->username), array('post/index', 'username' => $this->author->username), $linkOptions=array('class'=>'author'));
}

В представлении post/_view.php вместо просто имени, ставим ссылку на автора:

posted by <?php echo $data->author->username ...
автор: <?php echo $data->authorLink ...

В views/posts/index.php

<?php if(!empty($_GET['username'])): ?>
<h1>Статьи автора &mdash; <i><?php echo CHtml::encode($_GET['username']); echo "&nbsp;<span class=smallgray>(кол-во: ".$countAuthorPosts.")</span>"?></i></h1>
<?php 
$this->breadcrumbs=array('Статьи'=>array('post/index'), 'автор '.$_GET['username'],);
$this->pageTitle="Статьи автора &mdash; ".$_GET['username'];
endif; ?>

Вводим переменную $countAuthorPosts в контроллере PostController, функции actionIndex

$countAuthorMaterials = Post::model()->count($criteria); // указывает сколько у автора материалов

и в вид её тоже передаём

$this->render('index',array(
'dataProvider'=>$dataProvider,
'countAuthorPosts'=>$countAuthorPosts,
)); 

Вот что получилось

уроки по yii: выборка статей определенного автора

Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.