помогите пожалуйста разобраться
в drupal 7 сразу после установки существует блок с формой поиска. код её примерно такой:
<div>
<div class="container-inline">
<h2 class="element-invisible">Форма поиска</h2>
<div class="form-item form-type-textfield form-item-search-block-form">
<label for="edit-search-block-form--2" class="element-invisible">Найти </label>
<input type="text" class="form-text" maxlength="128" size="15" value="" name="search_block_form" id="edit-search-block-form--2" title="Введите ключевые слова для поиска.">
</div>
<div id="edit-actions" class="form-actions form-wrapper"><input type="submit" class="form-submit" value="Найти" name="op" id="edit-submit"></div><input type="hidden" value="form-L2mtv78lupETXpFEzrSbnVMrb54rR4O91uwSJ2Y0FpY" name="form_build_id">
<input type="hidden" value="x03xcoW_WZxsoGEiKEMTCmgD-4pgYrOJAXIgn-KMGQc" name="form_token">
<input type="hidden" value="search_block_form" name="form_id">
</div>
</div>
</form>
я изменяю эту форму через function themenabe_form_alter(&$form, &$form_state, $form_id) {}. то есть в массив(объект) $form добавляю новые элементы(свойства).
проблема в том, что я не понимаю структуру этого массива(даже после вывода его через php-функцию print_r()). например я прописываю в template.php следующее:
<?phpfunction surma_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'search_block_form') {
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submitttt'),
);
}
}?>
в результате надпись на кнопке добавления формы меняется. ок. но непонятно что означает индекы 'submit'. откуда он? если это type кнопки отправки формы, то существует неоднозначность. как например тогда идентифицировать поля текстовые input, ведь их может быть несколько и тип у них соответственно один и тот же.
непонятно даже как обратиться к единственному полю, которое сейчас есть в форме поиска и добавить например класс qwe
ps в последних двух пунктах есть 2 вопроса, которые очень для меня важны. ответьте именно на них пожалуйста, люди добрые
Комментарии
Просто сделали такой индекс у этого элемента формы, он не обязан совпадать с #type этого элемента формы и может быть на самом деле любым другим.
Примерно так:
'class' => array('qwe'),
);
большое спасибо. но объясните пожалуйста ещё откуда взялся ['search_block_form']. его тоже просто так придумали разработчики(как['submit'])? как он связан с этим конкретным полем?
опять же, если текстовых полей input несколько, то как можно узнать их индексы?
http://drupalcode.org/project/drupal.git/blob/refs/heads/7.x:/modules/se... - функция построения этой формы, аргумент $form_id для блока равен "search_block_form". Смотрите также http://drupalcode.org/project/drupal.git/blob/refs/heads/7.x:/modules/se...
http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.ht...
Ну ты когда создаешь элементы формы(элементы массива $form) - его ключи и есть индексы.
Если узнать ключи элементов существующей формы - print_r, ты правильно делал. Можешь в фаербаге посмотреть атрибуты name и id элементов формы, по ним поймешь какие ключи соответствуют им в массиве $form.