Хуки в двойке

#1 27 июля 2016 в 15:56
Было бы полезно знать, какие есть и что делают?
Что делают, это зачастую понятно по названию, а вот перечень хуков (ныне доступных) не нашёл.

В частности сейчас мне понадобился хук поля. Чтобы при добавлении статьи записывать данные из поля в отдельную таблицу в базе. При этом, полей одного типа может быть несколько. Или это можно\нужно делать прямо в файле поля через функцию?
#2 27 июля 2016 в 16:13
Я для подобных целей использую что-то из этого:
  1. content_after_add,
  2. content_{$ctype['name']}_after_add,
  3. content_after_add_approve,
  4. content_{$ctype['name']}_after_add_approve
По типу поля выбираете нужные вам и записываете данные в БД.
#3 27 июля 2016 в 18:19


Я для подобных целей использую что-то из этого:

Val

Val, эти хуки я тоже использую. Значит хука поля нет?

Мне нужно собирать данные из полей одного типа, не зная их системных имён.
В шаблоне моего типа поля я добавляю input с определённым названием(например field) и передаю сис. имя поля в его значение.
В хуке прокручиваю request->get('field') и узнаю все сис. имена полей моего типа. Тут же, через тот же request->get узнаю значения полей для каждого из полей. Но это для меня целая эпопея… сложно. Подумал, может быть есть возможность обращаться к полю через хук или прямо в файле моего поля прописать функцию срабатывающею при добавлении статьи.

В частности, для решения своей задачи при редактировании записи я обхожусь ajax решениями а вот при добавлении записи я не знаю id записи и приходится использовать хук, например тот же content_after_add. Не назначать же мне свою js функцию на отправку формы только из за своей безграмотности в данном вопросе ;).
#4 27 июля 2016 в 19:10
В одном из указанных выше хуков получаете все поля для данного типа контента:
  1. $fields = cmsCore::getModel('content')->getContentFields($data['ctype_name']);
В $data['ctype_name'] — в хуке передается имя типа контента
Теперь $fields содержит массив полей ключи которого системные названия полей. Перебираете массив и фильтруете по нужному типу поля $fields[$key]['type'] == 'нужный_тип_поля'
Тут в зависимости от потребностей, или собираем системные названия интересующих полей, или оставляем нужные поля в массиве или еще что))
А далее с известными названиями полей прочесываете $data['item']['системное_имя_поля'] и обрабатываете нужные вам данные.
#5 27 июля 2016 в 20:23


В одном из указанных выше хуков получаете все поля для данного типа контента:

  1. $fields = cmsCore::getModel('content')->getContentFields($data['ctype_name']);
В $data['ctype_name'] — в хуке передается имя типа контента
Теперь $fields содержит массив полей ключи которого системные названия полей. Перебираете массив и фильтруете по нужному типу поля $fields[$key]['type'] == 'нужный_тип_поля'
Тут в зависимости от потребностей, или собираем системные названия интересующих полей, или оставляем нужные поля в массиве или еще что))
А далее с известными названиями полей прочесываете $data['item']['системное_имя_поля'] и обрабатываете нужные вам данные.

Val

Мне не хватает конструктивного подхода, начиная с php, заканчивая изучением движка.
hoho

Видимо мне вернее будет использовать: content_after_.._approve

Благодарю Вас за уделённое внимание и помощь! ;)
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.

Похожие темы

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.