Страница 9 из 12
addon_for_thanks_for_posts
Добавлено: 05 окт 2014, 10:32
rxu
Ну как же. Сколько уже раз при изменении кода хелпера, уведомлений, и даже шаблона приходилось менять и контроллер, и вызывающий его яваскрипт.
addon_for_thanks_for_posts
Добавлено: 05 окт 2014, 10:45
Алг
Контроллер-да, но Вы же его и меняли и хорошо в этом разбираетесь, джаваскрипт пока не менялся при этих изменениях. При изменении шаблона со стороны движка, изменение джскрипта маловероятно, если Вы в эксте будете менять шаблон, то возможно, придётся менять и скрипт. Уверена на 100%, что в команде есть неплохо знающие клиентские скрипты, помогут поправить код, если я отвалюсь
Отправлено спустя 1 минуту 39 секунд:
И в любом случае, весь мой код можно легко отключить
addon_for_thanks_for_posts
Добавлено: 05 окт 2014, 11:03
rxu
Вобщем, разобрался. Всё немного по-другому.
Инъекцию зависимости можно сделать опциональной, очень просто. Вместо
добавляем
знак вопроса означает, что сервис будет передан в конструктор, если этот сервис существует. Если нет - просто не будет передано ничего, т.е. null.
Соответственно, в конструкторе можно установить для этого сервиса значение по умолчанию, типа
Код: Выделить всё
\gfksx\ThanksForPosts\core\helper $gfksx_helper = NULL
и потом в коде делать проверку, например
Код: Выделить всё
if ($this->gfksx_helper !== NULL)
{
$this->gfksx_helper->add_notification($thanks_data);
}
Источник:
Service Container (The Symfony Book) :: Making References optional
addon_for_thanks_for_posts
Добавлено: 05 окт 2014, 13:39
Алг
пр?
addon_for_thanks_for_posts
Добавлено: 05 окт 2014, 14:52
rxu
ПР это да, по идее, при отсутствии хелпера надо вообще блокировать работу аддона, пока не понял, в какое место return вставить
addon_for_thanks_for_posts
Добавлено: 05 окт 2014, 16:47
Алг
лучше не return, а
Код: Выделить всё
$this->error[] = array('error' => $this->user->lang['INCORRECT_THANKS']);
или задать новое сообщение об ошибке
Отправлено спустя 8 минут 45 секунд:
нет, лучше и не так.
rxu писал(а):QR_BBPOST в коде делать проверку, например
КОД: ВЫДЕЛИТЬ ВСЁ
if ($this->gfksx_helper !== NULL)
{
$this->gfksx_helper->add_notification($thanks_data);
}
эта проверка в листенере? Если в нем, то добавьте в темплейт булевскую переменную, а я в шаблоне буду проверять её значение. если не подключён экст, то я не подключаю файл addon_for_thanks_for_posts.js и аддон не будет работать
addon_for_thanks_for_posts
Добавлено: 05 окт 2014, 17:17
rxu
Так-с. В аддоне подключение addon_for_thanks_for_posts.js происходит внутри условия
Код: Выделить всё
<!-- IF S_TOPIC_ID && S_FORUM_THANKS -->
...
<!-- INCLUDEJS addon_for_thanks_for_posts.js -->
<!-- ENDIF -->
Т.е., тогда, ничего делать не надо?
Отправлено спустя 1 минуту 6 секунд:
Хотя нет, такая же переменная есть и в основном эксте, и в аддоне. Кстати, надо ли это? В основном эксте S_FORUM_THANKS определена во вьютопике, в принципе, в аддоне можно вообще от слушателя избавиться тогда.
Отправлено спустя 11 минут 18 секунд:
Попробовал - не вышло почему-то.
addon_for_thanks_for_posts
Добавлено: 05 окт 2014, 17:18
Алг
rxu писал(а):QR_BBPOST <!-- IF S_TOPIC_ID && S_FORUM_THANKS -->
1-е понятно, 2-е я уже забыла, что это. выглядит не очень мнемонически
addon_for_thanks_for_posts
Добавлено: 05 окт 2014, 17:19
rxu
А потому, что событие шаблона от аддона срабатывает раньше.
Алг писал(а):QR_BBPOST 2-е я уже забыла, что это. выглядит не очень мнемонически
Ага. Это флаг наличия права благодарить в данном форуме.
addon_for_thanks_for_posts
Добавлено: 05 окт 2014, 17:22
Алг
rxu писал(а):QR_BBPOST А потому, что событие шаблона от аддона срабатывает раньше.
можно задать низший приоритет?