РЕШЕНО! Пересохранение ноды через Rules. Вопрос имеется

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

Аватар пользователя iNFerNo iNFerNo 11 декабря 2012 в 12:37

Создал правило - после сохранения материала.
В действие добавляю следующий пункт (см. картинку).

Но почему то возникают проблемы... Или др. действие требуется?

ВложениеРазмер
Иконка изображения saveentity.jpg36.56 КБ

Комментарии

Аватар пользователя AI AI 11 декабря 2012 в 12:55

Может правило сделать "перед сохранением"? Провести изменения и дать движку нормально в штатном режиме завершить сохранение ноды?

Аватар пользователя iNFerNo iNFerNo 11 декабря 2012 в 13:15

Мне нужно nid вытащить в заголовок. А это только после создания ноды можно сделать.

А ошибка - не сохраняет, пишет ошибку...

Но при этом... работает удалить... ноду...

Аватар пользователя iNFerNo iNFerNo 11 декабря 2012 в 13:21

кажется нашел косяк но не понимаю почему.

нода по дефолту не должна публиковаться. и когда я выбираю публиковать - ошибка. если не выбираю публиковать - все нормально.

Как решить вопрос с публикацией...

Аватар пользователя iNFerNo iNFerNo 11 декабря 2012 в 13:34

А если не выбирать при создании ноды- опубликовано, а добавить в действие в правило, после действия сохранения... то же ошибка.

Аватар пользователя iNFerNo iNFerNo 11 декабря 2012 в 14:39

А что нужно выбрать в правилах если требуется после добавления ноды изменить значение поля... что то не могу разобраться...

Аватар пользователя iNFerNo iNFerNo 12 декабря 2012 в 12:31

походу баг в каком то модуле... Entity Api или Rules или в модуле Node

Я на нулевый друпал ставил, такой же вроде глюк...

В чем может быть проблема о невозможности пересохранения ноды рулесами, если нода - имеет стаутс опубликованая. (удаление и создание пашет)

Аватар пользователя iNFerNo iNFerNo 12 декабря 2012 в 13:53

Выяснил ошибку

PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '917-2-content_access_rid' for key 'PRIMARY': INSERT INTO {node_access} (nid, realm, gid, grant_view, grant_update, grant_delete) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5); Array ( [:db_insert_placeholder_0] => 917 [:db_insert_placeholder_1] => content_access_rid [:db_insert_placeholder_2] => 2 [:db_insert_placeholder_3] => 1 [:db_insert_placeholder_4] => 0 [:db_insert_placeholder_5] => 0 ) в функции node_access_write_grants() (строка 3440 в файле /home/u3311/domains/agatawar.ru/modules/node/node.module).

Аватар пользователя iNFerNo iNFerNo 12 декабря 2012 в 14:24

РЕШЕНО!

нужно в модуле ядра 2 строчки спустить на 2 строки ниже

Такая должна быть последовательность строк!

// Save fields.
$function = "field_attach_$op";
$function('node', $node);

// Update the node access table for this node. There's no need to delete
// existing records if the node is new.
$delete = $op == 'update';
node_access_acquire_grants($node, $delete);

module_invoke_all('node_' . $op, $node);
module_invoke_all('entity_' . $op, $node, 'node');