а как сделать заполнение этого поля обязательным ? в настройках типа материала такого нет ! там просто указано , что Настройки адресов path Элементы формы модуля Path и никак его настраивать нельзя
действительно если просто в ручную добавляю в input edit-path-alias параметр required, то его необэодимо будет задавать в ручную. а можно как-то может легче через темизацию шаблона данной формы подобраться к данному полю ?
понял. спасибо. по поводу отладчика я не могу его установить. доступ к хостингу не дадут.
можно ли как то проверить подцепляет данный хук форму или нет ?
Ошибка №1. Не следует полностью переписывать массив определений/свойств поля. Нужно только переопределить одно свойство:
<?php $form['YOUR_FIELD']['#required'] = TRUE; ?>
morgusha wrote: если вставляю вместо article_node_form это - article-node-form
№2. Машинные ID форм (и тем более имена хуков) - только со знаком подчёркивания вместо дефисов: article_node_form или mymodule_form_article_node_form_alter
<?php function mymodule_form_article_node_form_alter(&$form, &$form_state, $form_id) { if ($form_id == 'article_node_form') { // тут тоже id формы нужно с подчёркиванием нижним вместо тире ? $form['edit-path'] ['#required'] = TRUE; // вместо названия поля нужно использовать id поля или его name ? } }?>
morgusha wrote: // тут тоже id формы нужно с подчёркиванием нижним вместо тире ?
Да.
morgusha wrote: вместо названия поля нужно использовать id поля или его name ?
Чаще всего атрибуты id в HTML-разметке совпадают с машинными именами/индексами полей в $form. Но только вместо дефисов - строго подчёркивание. А чтобы быть точно уверенным - хотя бы <?php print_r($form); ?>, если уж нет devel.
И да - там лишний пробел между квадратными скобками, должно быть так:
Комментарии
Зайти в настройки вашего текстового формата (/admin/config/content/formats) и снять эту галку
мне вот эту галку надо отключить !![](/sites/default/files/inline/images/2021/93496/screenshot_5.jpg)
а в настройках текстового формата такого нет !
А, Вы про URL ноды. Эта галка ставится модулем Path Auto.
Всё вроде разобрался. Убрал шаблоны адресов в модуле path !
НО адрес всё равно формируется автоматически типа: node/321 а нужно чтобы задавать его в ручную и без введения в ручную материал бы не создавался
Это функционал ядра Drupal, это служебный адрес и он не является синонимом
а можно сделать так, чтобы пока в ручную не введёшь url он бы не создавал материал ?
Только с помощью программирования. Либо сделать заполнение этого поля обязательным, либо при сабмите формы проверять это поле на пустое/не пустое
а как сделать заполнение этого поля обязательным ? в настройках типа материала такого нет ! там просто указано , что Настройки адресов path Элементы формы модуля Path и никак его настраивать нельзя
Я же написал "только с помощью программирования". Чуть ниже дали похожий ответ
Вам проще всего будет поставить #required => TRUE на поле с вводом адреса через hook_form_alter
Хм. Пробую. Сделал так вот в template.php и не получается:
<?php
function mymodule_form_article_node_form_alter(&$form, &$form_state, $form_id) {
$node = $form_state->getFormObject()->getEntity();
if (
$node->getType() == 'article') {$form['terms_of_use'] = array(
'#required' => TRUE,
);
}
}?>
Можете подсказать пожалуйста так как с api вообще не работал ! ?
А при чем тут terms_of_use, если Вам нужно поле синонимов?
действительно если просто в ручную добавляю в input edit-path-alias параметр required, то его необэодимо будет задавать в ручную. а можно как-то может легче через темизацию шаблона данной формы подобраться к данному полю ?
если вставляю вместо article_node_form это - article-node-form![](/sites/default/files/inline/images/2021/93496/screenshot_8.jpg)
то сайт перестаёт работать
А вообще нужно подключить отладчик xdebug и по шагам идти по своему коду. 99% вопросов сразу же отпадает
вообще для вызова такого хука должен быть создан модуль mymodule ?
function mymodule_form_article_node_form_alter
Можно, но необязательно. Можно и в теме оформления. Главное, не забывать кэш сбрасывать, когда новые хуки добавляются в код
понял. спасибо. по поводу отладчика я не могу его установить. доступ к хостингу не дадут.
можно ли как то проверить подцепляет данный хук форму или нет ?
Работать на хостинге - плохая идея. Разверните локальную копию сайта у себя на компьютере
понятно !
можно ли как то проверить подцепляет данный хук форму или нет ?
Ошибка №1. Не следует полностью переписывать массив определений/свойств поля. Нужно только переопределить одно свойство:
<?php
$form['YOUR_FIELD']['#required'] = TRUE;
?>
№2. Машинные ID форм (и тем более имена хуков) - только со знаком подчёркивания вместо дефисов:
article_node_form
илиmymodule_form_article_node_form_alter
№3.
Вы как-то определитесь, D7 или D8. А то тег даёте для D7, а код откуда-то вытащили для D8.
спасибо ! делаю так вот :
<?php
function mymodule_form_article_node_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'article_node_form') { // тут тоже id формы нужно с подчёркиванием нижним вместо тире ?
$form['edit-path'] ['#required'] = TRUE; // вместо названия поля нужно использовать id поля или его name ?
}
}?>
Да.
Чаще всего атрибуты
id
в HTML-разметке совпадают с машинными именами/индексами полей в$form
. Но только вместо дефисов - строго подчёркивание. А чтобы быть точно уверенным - хотя бы<?php print_r($form); ?>
, если уж нет devel.И да - там лишний пробел между квадратными скобками, должно быть так:
<?php
$form['edit-path']['#required'] = TRUE;
?>
а где выводить данный массив ?
<?php print_r($form); ?>
в template.php
внутри данного хука он не выводится (
даже такое не работает ! что за фигня ?
<?php
function hook_form_alter(&$form, $form_state, $form_id) {
drupal_set_message($form_id);
}?>
слово hook нужно заменить на имя своей темы или модуля
ну как я понимаю в этом хуке все формы должны к полю title добавить описание :
<?php
function bartik_form_alter(&$form, &$form_state, $form_id){
$form['title']['#description'] = 'Описание поля для глухонемых';
}?>
но даже этого не происходит (
Может есть у кого рабочий пример изменения любого поля любой формы, чтобы проверить вообще данный функционал работает на сайте или нет ?