Темизация форм

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

Аватар пользователя digital_sword digital_sword 27 августа 2010 в 9:22

Почитал статью neochief про темизацию.
Так вот он пишет здесь http://drupaldance.com/blog/темизация-форм#formarr : "Итак, нам нужно просто пройтись по этому массиву и найти то, что нужно поменять".

У меня вываливается огромный массив и хер что там найдешь.
Есть какие-то модули для разработчиков, которые бы выводили массив формы структурированно?
Ну чтобы легко можно было определить путь до объекта, например ['account']['name']['#title']

Комментарии

Аватар пользователя digital_sword digital_sword 27 августа 2010 в 15:01

А как вы догадались, что путь именно ['field_name']['data']['title']['#maxlength']? Включил модуль (прикладываю скрин), куда только не жал, но такое дерево получить не смог. http://www.7image.ru/pics/0810/63789273.png
Максимум, что получается ['title']['#maxlength']. А старший массив показывается element и все.

Кстати с включенным devel сайт жутко тормозит (хостинг it-patrol). Мне бы простую замену функции print_r($form); чтобы информация деревом выходила и не надо девелов.

Аватар пользователя digital_sword digital_sword 27 августа 2010 в 18:14

Ага. Вот так вижу путь :). Только и dpm() и k_printr() работают только со включенным devel. (Krumo требует devel). Проблема решена, но от столь тяжелого модуля, очень грузящего базу, хотелось бы отказаться.
Есть что-нибудь без девела?
Или как и писал, текстовый вывод, более структурированный, чем print_r($form); Вот как на картинке у neochiefa

Аватар пользователя digital_sword digital_sword 27 августа 2010 в 18:54

И если честно до сих пор не нашел нужное поле... ['field_name']['data']['title']['#maxlength'] - вообще ничего подобного нет, (field_name искал свое).
С помощью dsm() не могу свое maxlength найти

Аватар пользователя digital_sword digital_sword 27 августа 2010 в 19:23


Я пишу в модуле hooks:

     $form['field_image']['0']['#default_value']['data']['#maxlength'] = 8;

И ничего, в поле все равно можно вводить неограниченное число символов.
А вот если написать $form['field_image']['0']['#default_value']['data']['description'] = 'меняем текст';, то текст меняется.
т.е. это не ['field_image']['0']['#default_value']['data']['#maxlength']

Или как его на textarea поменять?

Аватар пользователя natbampo natbampo 28 августа 2010 в 11:38
<?php
$form
['#after_build'] = array('func1''func2');
// где
function func1($form$form_state){
  
// меняем тут что надо в форме
  // ...
  
return $form;
}
?>
Аватар пользователя digital_sword digital_sword 28 августа 2010 в 12:06

а где указывается id формы?
Можете на моем примере показать?

<?php
$form
['#after_build'] = array('func1''func2');
// где
function func1($form$form_state){
$form['field_image']['0']['#maxlength'] = 3;
$form['field_image']['0']['#default_value']['data']['#maxlength']  = 3;
  return 
$form;
}
?>
Аватар пользователя digital_sword digital_sword 28 августа 2010 в 12:43

А так чтоб попонятнее? Не ясно, куда здесь ид вставлять.

<?php
$form
['#id'] = 'new_node_form';
$form['#after_build'] = array('func1''func2');
function 
func1($form$form_state){
$form['field_image']['0']['#maxlength'] = 3;
$form['field_image']['0']['#default_value']['data']['#maxlength']  = 3;
  return 
$form;
}
?>

Это не работает. Поле - обычно imagefield с включенным описанием. Страница - обычная страница редактирования материала.