Форум программистов, компьютерный форум, киберфорум
PHP: Yii, Yii2
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 2
Регистрация: 30.01.2017
Сообщений: 65

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

20.07.2017, 17:34. Показов 3195. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.07.2017, 17:34
Ответы с готовыми решениями:

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

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

Как правильно создать систему уведомлений для браузерной игры\сайта?
Всем привет! Недавно начал заниматься веб программированием, есть некие начальные знания в PHP/JS/HTML/CSS, для более интересного...

3
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
20.07.2017, 19:51
Цитата Сообщение от holland Посмотреть сообщение
как проблему решить данную Operator '' requires two operands
Где код с этой ошибкой?

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

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

Строка 53, какой то недокомментарий.
1
0 / 0 / 2
Регистрация: 30.01.2017
Сообщений: 65
21.07.2017, 10:21  [ТС]
Когда изменил вместо == на => вывелись все записи, форма не применилась.
А такой вопрос Срока 19, а как результат выводить.
И второй вопрос сразу, как выводить от рисованное окно
0
0 / 0 / 2
Регистрация: 30.01.2017
Сообщений: 65
24.07.2017, 11:26  [ТС]
Я решил проблему
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.07.2017, 11:26
Помогаю со студенческими работами здесь

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

Как в области уведомлений панели задач переместить значок Центра уведомлений?
Всем привет. Переставил Винду и внезапно в самом краю не часы, а этот центр. 7 лет пользуюсь пк и всегда крайними были часы, а теперь стало...

Как правильно создать систему уведомлений на сайте?
Привет всем! Решил на сайт добавить функцию уведомления. Т.е. когда юзер заходит в личный кабинет, если есть новое уведомление, которое...

Надо создать БД на языке SQL для FireBird, ПОЖАЛУЙСТА...
file:///C:/Temp/moz-screenshot.jpgСама таблица находится во вложенном файле... СПАСИБО ВСЕМ, КТО МОЖЕТ ХОТЬ ЧЕМ-НИБУДЬ))))

Какой проект надо создать для компилирования DLL
Какой проект надо создать и как изменить исходник , что бы компилировал в DLL , а не в EXE ??


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru