Drupal 8: обновление узла программно не обновляет состояние узла в представлении - PullRequest
0 голосов
/ 15 октября 2018

У меня есть тип узла "агентство", в котором есть логическое поле с именем "has_subscription".

Тогда у меня есть представление, которое показывает только агентства, которые имеют "has_subscription" true.

Все хорошо.

Я обновляю значение поля программно следующим образом:

$node = node_load($nid);
$node->set("field_has_subscription", 1);
$node->save();

Если я затем отредактирую узел, я вижу, что флажок длялогическое поле теперь проверено.Отлично.

Тем не менее, представление все еще не отображает этот узел.Оно только начинает появляться, если я сохраню страницу редактирования узла.

Нужно ли что-то добавить в код?

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

Установить узел на опубликованный при сохранении

use Drupal\node\Entity\Node;

$node = Node::load($nid); 
//set value for field
$node->field_has_subscription->value = TRUE;
// set node to publish 
$node->setPublished(TRUE);
//save to update node
$node->save();
0 голосов
/ 17 октября 2018

Используйте ниже код

$node  =  \Drupal\node\Entity\Node::load($nid);
$node->set('field_has_subscription', 1);
$node->save();
0 голосов
/ 16 октября 2018

Если вы используете Drupal 8, пожалуйста, перепишите следующий код в вашем файле и проверьте его.

use Drupal\node\Entity\Node;

$node = Node::load($nid);

//set value for field
$node->field_has_subscription->value = TRUE;

//save to update node
$node->save();
...