Вы здесь

Как произвести валидацию ноды перед вызовом node_save()?

0

Привет. пишу небольшой модуль, завис на валидности полей.

модуль при определенных условиях создает новый материал с полями и необходимыми значениями для этих полей.
ноды создаю так:


$node = entity_create('node', array( 'type' => 'program', 'title' => $prName, 'uid' => 1, 'field_program_date' => array( 'und' => array( array( 'value' => $newDay, 'timezone' => 'Asia/Krasnoyarsk', 'timezone_db' => 'Asia/Krasnoyarsk', 'date_type' => 'datetime', ), ), ), 'field_program_excursion' => array ( 'und' => array( array( 'target_id' => $nodeId, ) ) ) )); node_save($node);

Материалы создаются отлично. НО (!)
стоит модуль unique_field
настройки таковы что тип материала "program" должен иметь уникальную комбинацию полей field_program_excursion **и **field_program_date

так вот, если создать материал через node_save($node), не учитывается проверка полей. (даже без тайтла может создать)

есть ли способ как то проверить перед сnode_save правила которые заданы для полей?

Версия Drupal: 
7.x
Категория: 
Entity APIField API
Связанные проекты: 
Entity APIUnique field
Вопрос задан 24.02.2017 - 16:21
Аватар пользователя Denis
Denis
58

как я понял вторым аргументом node_validate просит id формы?
если так:
node_validate($node);
ругается:

Warning: Missing argument 2 for node_validate(), called in /var/www/nguide.dd/html/sites/all/modules/devel/devel.module(1415) : eval()'d code on line 25 and defined in node_validate() (line 1011 of /var/www/nguide.dd/html/modules/node/node.module).
Warning: Missing argument 3 for node_validate(), called in /var/www/nguide.dd/html/sites/all/modules/devel/devel.module(1415) : eval()'d code on line 25 and defined in node_validate() (line 1011 of /var/www/nguide.dd/html/modules/node/node.module).
Notice: Undefined variable: form in node_validate() (line 1039 of /var/www/nguide.dd/html/modules/node/node.module).
Notice: Undefined variable: form_state in node_validate() (line 1039 of /var/www/nguide.dd/html/modules/node/node.module).
Notice: Undefined property: stdClass::$nid in unique_field_node_validate() (line 178 of /var/www/nguide.dd/html/sites/all/modules/unique_field/unique_field.module).
Notice: Undefined property: stdClass::$nid in unique_field_node_validate() (line 178 of /var/www/nguide.dd/html/sites/all/modules/unique_field/unique_field.module).

Так же:
ошибка от unique field

This form requires that the fields date, excursion are a unique combination. The specified values are already used.
Click here to bypass this check and resubmit.

но материалы создаются

Комментарий оставлен 25.02.2017 - 14:24

это я понял.
node_validate($node, $form, &$form_state)
не пойму что ему скормить остальными параметрами? Подскажите, пожалуйста.

Комментарий оставлен 17.03.2017 - 12:54

Ответы

-2

hook_node_presave
hook_entity_presave

Ответ дан 26.02.2017 - 09:28

Но ведь в таком случае валидацию то нужно самому писать?
а я хочу избавиться от переписывания того что и так умеет делать друпал

Комментарий оставлен 27.02.2017 - 13:37