Как реализовать виджет который показывал количество записей непрочитанных уведомлений, когда кликнеш на него, то выходит записи непрочитанных уведомлений. И когда на какое то уведомление кликнеш то переходишь на заказ. Я уже примерно реализовал это сделать так что вся выборка в контроллере указывал, и в шаблоне строил внешний вид. Но слишком громоздкий код в контроллерах выходит. Но становится неудобны когда создается actionю Для примеру вот как это у вконтакте или других соц сетях реализовали, нужно практически тот самый эффект будет
Вот что я набросал, но код не работает, выходит ошибка Operator '' requires two operands.
Я загуглил что-то толкового я не нашел на решение собственной проблемы
class Notifications extends Widget
{
public function run()
{
return $this->renderItems();
}
/**
* Creates a window for the notification
* @method string renderCount()
* @return string
*/
public function renderItems()
{
//Берем записи не просмотренные уведомлений у определенного пользователя
$notifModel = Notification::find();
$notifications = $notifModel->where(['id_user' == Yii::$app->user->id, 'active' => true])->all();
//добавляем количество записей
$this->renderCount();
//под поределенную категория уведомлений делаем свой логотип вначале
foreach($notifications as $notification){
$date = date('Y-m-d H:i:s', time());
if ($notification->category == 0) {
$notif = '<span class="glyphicon glyphicon-road"></span> '.$notification->name.'<br>';
} elseif ($notification->category == 1) {
$notif = '<span class="glyphicon glyphicon-ok"></span> '.$notification->name.'<br>';
} elseif ($notification->category == 2) {
$notif = '<span class="glyphicon glyphicon-file"></span> '.$notification->name.'<br>';
} elseif ($notification->category == 4 && $notification->srok <= $date){
$notif = 'Напоминание о заказе №'.$notification->id_zakaz.' '.$notification->srok;
} elseif ($notification->category == 4 && $notification->srok >= $date){
$notif = '';
}
//При нажатие на запись идет редирект на заказ
echo Html::a($notif.'<br>', ['notification/notification', 'id' => $notification->id_zakaz], ['id' => $notification->id_zakaz, 'class' => 'zakaz', 'data-key' => $notification->id_zakaz]);
};
//отрисовываем окно уведомлений
$formNotif = '<div class="notification-container hidden" id="notification-container">
<div class="notification-content">'.$notifications.'</div>
<div class="notification-footer">'.Html::a('Прочитать все напоминание', ['notification/index']).'</div>
</div>';
return $formNotif;
}
/**
* Notification count row
* @return string
*/
public function renderCount()
{
//Получаем количество не просмотренные уведомлений у определенного пользователя
$notifModel = Notification::find();
$notification = $notifModel->where(['id_user' == Yii::$app->user->id, 'active' => true])->count();если количество больше 50, то указывается 50+
if ($notification > 50) {
$notifications = '50+';
} elseif ($notification < 1) {
$notifications = '';
} else {
$notifications = $notification;
}
//отрисовываем логотип и полученное число
return '<span class="glyphicon glyphicon-bell" style="font-size:21px"></span><span class="badge pull-right">'.$notifications.'</span>';
}
}
На github вот код
https://github.com/hollandit/crm/blob/development/...