Хандлер одного поля, а присвоить значения 10-и полям ?

Главные вкладки

Аватар пользователя olejonok olejonok 6 января 2016 в 1:57

Добрый день. С Новым Годом! С наступающим Рождеством!
А мы все копаем Smile

Вводная:
Заводим виртуальные поля для наших данных :

<?php
/**
 * Implements of hook_views_data().
 */
function MYMODULE_views_data() {
  return array(
    
'my_db' => array(
        
// Виртуальное поле 1
        
'first_field_calc' => array(
           
'group' => t('My Utilites'),
           
'title' => t('Description field 1'),
           
'help' => t('Calculated Field'),
           
'field' => array('handler' => 'MYMODULE_handler_first_field_calc'),
          ),

// ***** skipped hrum-hrum ******

      // Виртуальное поле 10
        

'ten_field_calc' => array(
           
'group' => t('My Utilites'),
           
'title' => t('Description field 10'),
           
'help' => t('Calculated Field'),
         ),
     ),
  );
}

?>

Возможно ли в обработчике ПЕРВОГО поля (он находится здесь MYMODULE_handler_first_field_calc.inc) присвоить значения и остальным полям с условными номерами 2,3,4,5,6,7,8,9,10 ?
Как это можно сделать изящно?
Само собой разумеется что значение первого поля обработчик вернет через RETURN $some_data;

P.S. Плодить однотипных обработчиков неохота. Все решил бы небольшой цикл в первом обработчике.

Спасибо.

Лучший ответ

Аватар пользователя olejonok olejonok 7 января 2016 в 1:23

Убрал 30 полей, засунул все в один ассоциированный массив, который засунул через serialize в одно поле. Избавился от 30% однотипного кода, который занес в цикл + оптимизировал по мелочи. Сейчас из 100 полей во ВЬЮШке останется только 70 в интерфейсе Smile Остальные "разворачиваются" в шаблоне через тот-же цикл Smile
Рад как слон Smile

Комментарии

Аватар пользователя Orion76 Orion76 6 января 2016 в 9:19

Если вирт-поля поля будут использоваться только в "специальных" вьюсах , тогда возможно нет смысла использовать field_handler, а имеет смысл использовать views_plugin_display ?
В методе render вернете html Ваших "полей" и все..

Или пусть это будет одно поле(с одном хендлером) разных "типов".
Тип выбирается в настройках поля (метод options_form и сопутствующие)
И обрабатывайте вывод каждого поля, в соответствии с его "типом" в одном хендлере.

Аватар пользователя olejonok olejonok 6 января 2016 в 13:47

Я с удовольствием освою оба варианта.
Меня бы например устроил вариант хандлера одного поля, если это поле массив.
Что-то с полпинка не получилось.

Views_display нашел пример ( http://internetdevels.ru/blog/create-display-extender-plugin-for-views ) и если правильно его понял, то там через форму интерфейса в ручном режиме добавляются новые поля.
У меня же случай такой, что хандлер получает информацию из другого поля и в зависимости от него генерирует 10...20 значений, к которым я во ВЬЮШке и хочу иметь доступ.

Спасибо.

Аватар пользователя olejonok olejonok 7 января 2016 в 1:23

Убрал 30 полей, засунул все в один ассоциированный массив, который засунул через serialize в одно поле. Избавился от 30% однотипного кода, который занес в цикл + оптимизировал по мелочи. Сейчас из 100 полей во ВЬЮШке останется только 70 в интерфейсе Smile Остальные "разворачиваются" в шаблоне через тот-же цикл Smile
Рад как слон Smile