Более быстрый способ заполнения заполнителей modx в форме из связанных объектов?

У меня есть несколько связанных объектов в базе данных, которые мне нужно обновить из той же формы. Это простой адресный объект, связанный с контактным объектом VIA 1: 1.

Я могу поклясться, что когда я однажды извлекал объект, я устанавливал все заполнители в одном вызове $ object-> toArray (), но, похоже, это уже не так. [Я не уверен, что изменилось]

Вот что я делаю сейчас, и это работает:

$thisEntity = $this->modx->getObject('Entities', array('id' => $entity, 'token' => $token));

$entityData = $thisEntity->toArray();

// extra lines
$entityContacts = $thisEntity->EntityContact->toArray();

foreach($entityContacts as $key => $value){
$entityData[$key] = $value;
}
// extra lines$this->modx->setPlaceholders($entityData, 'fi.');

Я уверен, что в какой-то момент я не использовал лишние строки и заполнил форму, но не как.

Есть ли более простой способ заполнить массив заполнителей [$ entityData] из объекта Entities и объекта EntityContact за один шаг?

1

Решение

Вы близки.

Использование modUser в качестве примера для представления одного объекта:

$modx->toPlaceholders($modx->user->toArray(), 'user');

если вы извлекаете коллекцию информации, заполнители — плохая идея за пределами фрагмента.

Вместо:

$out='';
if ($collection){
foreach ($collection as $object){

if (is_object ($object) && $object instanceof someclass){
$out .= $modx->getchunk('chunkName', $object);
}
}
}

return $out;

или же

$modx->toPlaceholder($out, 'somename');
1

Другие решения

Я думаю, нет. Ты можешь использовать array_merge для вашего примера или создать собственный запрос, который дает вам сводные данные.

-1

Не могу привести рабочий пример, отсюда и недостаток моего опыта, но:

  • играть с описанными опциями toArray () Вот. (Ваши данные ленивы или связаны?)

  • выведите объект после первого вызова и опубликуйте здесь структуру, чтобы мы могли увидеть и выяснить, что происходит.

  • эта похожая тема на форумы modx может помочь тоже.

  • наконец, источник toArray () находится в github под blob -> master -> core -> xpdo -> om -> xpdoobject.class.php / не может опубликовать третью ссылку:) /

-2
По вопросам рекламы [email protected]