Почему значения конвертируются в массив?

У меня есть этот код:

public function saveAction(Request $request)
{
$orders = $request->get('orders');
$sameAddress = $request->get('same_address');

// NaturalPerson: 1 | LegalPerson: 2
$person_type = isset($orders['person']['nat']) ? 1 : 2;
$register_type = isset($orders['person']['nat']) ? array("natural") : array("legal");

$entityOrder = new Orders();
$formOrder = $this->createForm(new OrdersType($register_type), $entityOrder);

$formOrder->handleRequest($request);

$em = $this->getDoctrine()->getManager();
$em->getConnection()->beginTransaction();

$errors = "";
$is_new = false;
if ($formOrder->isValid())
{
if ($person_type === 1)
{
// Set NaturalPerson entity
$entityPerson = $em->getRepository('FrontendBundle:NaturalPerson')->findOneBy(array("ci" => $orders['person']['ci']));
if (!$entityPerson)
{
$entityPerson = new NaturalPerson();
$entityPerson->setPersonType($person_type);
$entityPerson->setDescription($orders['person']['nat']['description']);
$entityPerson->setContactPerson($orders['person']['nat']['contact_person']);
$entityPerson->setIdentificationType($orders['person']['identification_type']);
$entityPerson->setCI($orders['person']['ci']);
$is_new = true;
}
}
elseif ($person_type === 2)
{
// Set LegalPerson entity
$entityPerson = $em->getRepository('FrontendBundle:LegalPerson')->findOneBy(array("rif" => $orders['person']['rif']));
if (!$entityPerson)
{
$entityPerson = new LegalPerson();
$entityPerson->setPersonType($person_type);
$entityPerson->setDescription($orders['person']['leg']['description']);
$entityPerson->setContactPerson($orders['person']['leg']['contact_person']);
$entityPerson->setIdentificationType($orders['person']['identification_type']);
$entityPerson->setRIF($orders['person']['rif']);
$is_new = true;
}
}

....

$entityOrder->setPerson($entityPerson);
$em->persist($entityOrder);
$em->flush();
}
else
{
$this->get('ladybug')->log($this->getFormErrors($formOrder));
$message = 'ERROR AL PROCESAR LOS DATOS';
$em->getConnection()->rollback();
}

return $this->render('FrontendBundle:Site:process.html.twig', array('message' => $message, 'errors' => $errors));
}

По какой-то причине, где-то, что я не могу найти, к сущности прибывает Массив, как показано в этой строке:

at Orders ->setPerson (array('rif' => '5345345345', 'identification_type' => 'V', 'description' => 'uiyiyuiyuiy',

‘contact_person’ => ‘ertertet’))
в /var/www/html/tanane/vendor/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php
по линии 438

Что вызывает эту проблему в моем приложении:

Исправляемая фатальная ошибка: аргумент 1 передан
Tanane \ FrontendBundle \ Entity \ Orders :: setPerson () должен быть экземпляром
Tanane \ FrontendBundle \ Entity \ Person, заданный массив, вызванный в
/var/www/html/tanane/vendor/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php
по строке 438 и определяется в
/var/www/html/tanane/src/Tanane/FrontendBundle/Entity/Orders.php line
276

Может ли кто-нибудь дать мне представление о том, где искать или находить эту ошибку?

Запуск некоторых тестов

После выполнения некоторого теста (заполните форму и отправьте данные, как любой обычный пользователь), я запутался и не знаю, что еще можно сделать для решения проблемы. Приложение имеет два типа форм для обработки Orders: Natural а также Legal, Я тестирую первый Natural и все было в порядке, форма проверяется и поток был полностью без проблем. Теперь, если я перейду через вторую форму, появится ошибка, описанная выше, почему? Точно такой же процесс и значения в порядке, так как $person_type принимает 2, и это integer так что, какой-нибудь совет? Я схожу с ума в этой точке

0

Решение

Ну а после того, как я сделал несколько тестов, наконец, нашел, что не так, я полностью забыл эту функцию в LegalPersonType.php форма:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Tanane\FrontendBundle\Entity\LegalPerson'
));
}

И это стало причиной проблемы, спасибо за вашу помощь и время

0

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

Других решений пока нет …

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