Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: Yii, Yii2
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
holland
0 / 0 / 2
Регистрация: 30.01.2017
Сообщений: 65
#1

Надо создать виджет для уведомлений в Yii2

20.07.2017, 17:34. Просмотров 563. Ответов 3
Метки нет (Все метки)

Мне нужно упростить код с уведомлением, чтобы каждый раз его не писать заново, то мне нужно, чтобы был виджет или что-то другое которая бы 1 получала данные из модели и выводило количество непросмотренных уведомлений данного пользователя и второй момент который еще выдавал описание данного уведомление.То есть на примеру мне нужно то же самое создать как вконтакте уведомление где значок в виде колокольчика
Реализовал я так код виджета, но он не рабочий, потому что я не пойму как проблему решить данную Operator '' requires two operands. и не пойму что конкретно хочет от меня программа.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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>';
    }
}
На гит хабе тоже есть ссылка для пирмера

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2017, 17:34
Ответы с готовыми решениями:

Yii2 чат-виджет
Здравствуйте! подскажите пожалуйста какой-нибудь урок или готовое решение для...

Yii2 не работает виджет
привет всем! только учусь использовать yii2... помогите пожалуйста с таким...

Простой многостраничный сайт на Yii2 без БД, есть ли быстрый старт для новичка в Yii2?
Привет! Решил смастерить сайт на Yii2, прочел вчера вводный раздел...

Как создать кнопку в yii2
Как создать кнопку отправить сумму + обозначить ее с полями ввода (поле никнейм...

Ошибка при установке Yii2-user with Yii2 advanced template
https://github.com/dektrium/yii2-user/blob/master/docs/usage-with-advanced-templ...

3
tarasalk
1122 / 652 / 265
Регистрация: 13.06.2013
Сообщений: 2,293
20.07.2017, 19:51 #2
Цитата Сообщение от holland Посмотреть сообщение
как проблему решить данную Operator '' requires two operands
Где код с этой ошибкой?

Строка 17 и 53
PHP
1
'id_user' == Yii::$app->user->id
Наверно =>, а не ==.

Строка 19, вызвали метод renderCount, но результат никак не используете.

Строка 53, какой то недокомментарий.
1
holland
0 / 0 / 2
Регистрация: 30.01.2017
Сообщений: 65
21.07.2017, 10:21  [ТС] #3
Когда изменил вместо == на => вывелись все записи, форма не применилась.
А такой вопрос Срока 19, а как результат выводить.
И второй вопрос сразу, как выводить от рисованное окно
0
holland
0 / 0 / 2
Регистрация: 30.01.2017
Сообщений: 65
24.07.2017, 11:26  [ТС] #4
Я решил проблему
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?= $form->field($client, 'phone')->widget(Select2::className(), [
                    'data' => ArrayHelper::map(Client::find()->all(), 'id', 'phone'),
                    'options' => ['placeholder' => 'Введите номер телефона'],
                    'pluginOptions' => [
                        'allowClear' => true,
                        'language' => [
                            'noResults' => new JsExpression('function () { return "<button type=\"button\" class=\"btn btn-primary btn-xs\">Добавить клиента</button>"; }'),
                        ],
                        'escapeMarkup' => new JsExpression('function (markup) {
        return markup;
    }')
                    ],
            ])?>
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2017, 11:26

Как создать роль в yii2-user
Подскажите как создать роль По умолчанию есть юзер и админ Как еще создать...

Создать страницу вне шаблона yii2
Подскажите, как сделать страницу/view, которая будет вне шаблона, лежащего в...

Как создать страницу ошибки 404 Yii2
Здравствуйте! Возни вопрос по поводу обработки ошибки 404 в фреймворке Yii2....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru