Не работает хук 2.X

 
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1684
Привет. Пытаюсь с хуками разобраться. Пишу компонент. Создал хук на событие редактирования профиля. И пытаюсь изменить данные в таблице.
Код PHP:
  1. class onAppointmentUsersAfterUpdate extends cmsAction {
  2.  
  3. public function run($profile){
  4.  
  5. $this->cms_model->update('appointment_events',$profile['id'],'title=www');
  6.  
  7. return $profile;
  8.  
  9. }
  10.  
  11. }
Но не хочет работать. Постоянно системные ошибки.
Спойлер
Пытался и на 'user_profile_update' вешать.Та же беда.
Редактировалось: 4 раз (Последний: 5 мая 2020 в 11:03)
Посетитель
small user social cms
МедальПочетный донор проектаКубок зрительских симпатийАвторитет форумаПочетный донор проекта
Сообщений: 3326
$profile не плохо б было сначала получить
Редактировалось: 1 раз (Последний: 5 мая 2020 в 11:51)
Украинский для инстант
Реклама
cms
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1684
Олег Васильевич я:
$profile не плохо б было сначала получить
А зачем? Не в этом ли смысл хуков,что бы получать "без получения"). Я же отлавливаю событие, в котором уже есть параметр. Я так понимаю. Или нет?
Редактировалось: 4 раз (Последний: 5 мая 2020 в 12:18)
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатийПочетный донор проекта
Сообщений: 3233
Lora,
Посмотрите сначала, что в этот хук вообще прилетает.
Код PHP:
  1. class onAppointmentUsersAfterUpdate extends cmsAction {
  2.  
  3. public function run($profile){ dump($profile);
  4.  
Посетитель
small user social cms
Медаль
Сообщений: 164
Lora:
Но не хочет работать. Постоянно системные ошибки.

И не захочет laugh Потому что надо вот так:
Код PHP:
  1.  
  2. class onAppointmentUsersAfterUpdate extends cmsAction {
  3.  
  4. public function run($profile){
  5.  
  6. list($profile, $old) = $profile;
  7.  
  8. $this->cms_model->update('appointment_events',$profile['id'],'title=www');
  9.  
  10. return ($profile, $old);
  11.  
  12. }
  13.  
  14. }
  15.  
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1684
Не думаю). Но попробую. Если отлавливать 'user_profile_update', то там один параметр. Но та же хрень). К тому же почему пишет, что id не определенна?
Редактировалось: 1 раз (Последний: 5 мая 2020 в 12:24)
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1684
list($profile, $old) = $profile;
Ошибка пропала. Уже прогресс).
Посетитель
small user social cms
Медаль
Сообщений: 164
Lora:
К тому же почему пишет, что id не определенна?

Потому, что в строке
Код PHP:
  1. public function run($profile)
переменная $profile содержит два массива, а не профиль как вы думаете. Думаю, что-то типа этого сработает в вашем примере

Код PHP:
  1. $profile[0]['id']
В моём примере должно сработать без [0]
Посетитель
small user social cms
Медаль
Сообщений: 164
Lora:
Ошибка пропала. Уже прогресс).

Код PHP:
  1. return ($profile, $old);
Это тоже не забывайте
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1684
Вообще то один).
Код PHP:
  1. Array ( [id] => 1 [groups] => Array ( [0] => 6 ) [service] => 4,5,6 [email] =>
Не понимаю почему list? Но не суть. Это вывод в профиле. По идее в хуке должно быть тоже самое.
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1684
К тому же в подобном файле компонента auth, используется $profile['email'], например.
Посетитель
small user social cms
МедальПочетный донор проектаКубок зрительских симпатийАвторитет форумаПочетный донор проекта
Сообщений: 3326
Lora:
А зачем? Не в этом ли смысл хуков,что бы получать "без получения")
Я не имел ввиду новое получение. Я имел ввиду, что неплохо б узнать что она собой представляет и что содержит (точно ли массив и есть ли в нём id)
Украинский для инстант
Посетитель
small user social cms
МедальПочетный донор проектаКубок зрительских симпатийАвторитет форумаПочетный донор проекта
Сообщений: 3326
... и на всякий случай вопрос: события обновил?
Украинский для инстант
Посетитель
small user social cms
Медаль
Сообщений: 164
Lora:
Вообще то один).

Вы заставили меня запустить локальный сервер... Передается два массива. В первом - профиль новый, во втором - старый. По крайней мере на первый взгляд это так. Последняя строка должна выглядеть вот так:
Код PHP:
  1. return array($profile, $old);
Посетитель
small user social cms
Медаль
Сообщений: 164
Олег Васильевич я:
и на всякий случай вопрос: события обновил?

Ошибки же выдаёт, значит обновил.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.