EntityMalformedException: Отсутствует связующее свойство у сущности

Аватар пользователя MGMaster MGMaster 16 апреля 2014 в 4:41

Решение проблемы "EntityMalformedException: Отсутствует связующее свойство у сущности ..."

Столкнулся с данной ошибкой, когда нужно было дать возможность создавать материал анонимному пользователю. На страницах node/add и node/add/... вылазит - все тут (у админа все нормально). Перерыл интернет - решение не нашел. Но все же некоторую информацию по крупицам получил.

Проблема этой ошибки в том, что появись она в одно время, а заметил я ее в другое время.
Дело в том, что по умолчанию в админке используется тема Seven. И вот как раз в ней ошибки нет, а когда даешь доступ к созданию материала Анониму, то тема Seven не используется. Получается что зависимость ошибки не в роли, а в теме. Но сразу это было не понятно, так на первый план всплывала такая зависимость, что у админа работает, ф у анонима не работает, хотя на самом деле не работало у всех. Это стало понятно, когда отключил у админа тему Seven для страниц создания и редактирования нод.

Сама ошибка возникает тогда, когда в node_load в качестве аргумента пытаешься подставить нечисловое значение (в данном случае текст 'add').

Я прошерстил файлы темизации в основной теме и нашел код, где идет проверка на первый аргумент 'node', а второй берется для node_load:

<?php
if (arg(0) == 'node'):
   
$node node_load(arg(1));
   ...
?>

Добавил проверку второго аргумента - все заработало

<?php
if (arg(0) == 'node' && is_numeric(arg(1))):
   
$node node_load(arg(1));
   ...
?>