[Решено] Не убираются Настройки адресов $form['path']

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

Аватар пользователя ivan-zykov ivan-zykov 13 марта 2012 в 0:29

Модифицирую форму через hook_form_alter(). Пытаюсь убрать с неё все настройки:

<?php
        
unset($form['revision_information']);
        unset(
$form['comment_settings']);
        unset(
$form['options']);
        unset(
$form['author']);
        unset(
$form['menu']);
        unset(
$form['additional_settings']);
        unset(
$form['path']);
?>

Всё удаляется кроме "Настройки адресов". Смотрел через print_r($form) массив, но там даже нет такого элемента, как path. В чём может быть причина?

Комментарии

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 13 марта 2012 в 2:59

А в самой форме он есть?
Как я вижу, модулем node он не предоставляется. Зато, по-видимому, предоставляется модулем path. Не помню, навскидку синтаксис, но мне кажется, скрывать надо упомянутый в path_form_alter $form['path']['alias'].

Аватар пользователя ser_house ser_house 16 марта 2012 в 3:18

А можно, я тоже попробую? Еще разок?

Смотрите, path тоже реализует hook_form_alter. Куча таких хуков от разных модулей должна как-то упорядочиваться в плане вызовов, верно? Она и упорядочивается - по весу модуля, если вес одинаковый - по названию модуля.

У path вес 0, у вашего модуля наверняка тоже. Значит, если вы назвали свой модуль на букву a - вызовется сначала ваш хук со всеми вашими unset, а потом - path_form_node_form_alter, который добавит свой филдсет на уже измененную вами форму.

Вы можете либо изменить название своего модуля так, чтобы он был ниже path в алфавитном порядке, либо увеличить его вес. Тогда ваш хук будет вызван после path, вы увидите и $form['path'] и $form['path']['alias'] и сможете делать с ними все что душе угодно.