Я использую Symfony 2.4.
У меня есть 2 объекта, имеющие отношения OneToMany и ManyToOne.
Я визуализирую объекты в ветке.
class SomeController extends Controller
{
/**
* @return \Symfony\Component\HttpFoundation\Response
*/
public function listAction()
{
$em = $this->getDoctrine()->getManager('some_manager');
$entities = $em->getRepository('SomeBundle:SomeClass')->findAll();
return $this->render('SomeBundle:list.html.twig', ['entities' => $entities]);
}
...
Прямые вещи. Работает нормально, тут проблем нет. Это больше для завершения.
Формы такие:
class FirstType extends AbstractType
{
/**
* Build the form elements
*
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('url', 'hidden')
->add('secondEntity', 'collection', ['type' => new SecondType()])
;
}
...
class SecondType extends AbstractType
{
/**
* Build the form elements
*
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('value')
->add('type')
;
}
Опять же, работает нормально.
Веточка
{% block content %}
<form method = "post" class = "form form-horizontal">
{{ form_start(form) }}
{{ form_row(form._token) }}
{{ form_errors(form.url) }}
{{ form_widget(form.url) }}
{{ form_errors(form.secondEntityGetterName) }}
{{ form_widget(form.secondEntityGetterName) }}
<div class = "form-actions">
<button type = "submit" class = "btn btn-primary">Submit</button>
</div>
{{ form_end(form) }}
</form>
{% endblock content %}
Здесь тоже все работает хорошо. Однако, поскольку они связаны, Symfony настаивает на отображении того, сколько сущностей связано с ним.
Обратите внимание на целые числа в левой части скриншота. Я хотел бы удалить их и оставить только правую часть скриншота.
У меня есть РТФМ, но в нем ничего не указано о связанных объектах.
Я пытался использовать различные геттеры внутри ветки в надежде, что смогу отобразить каждый элемент отдельно. Пока это больше хлопот, чем что-либо еще.
Я уверен, что должен быть лучший способ.
Я реализую это. abstract class AbstractType implements FormTypeInterface сущности, насколько я могу судить, в порядке. Проблема не в коде или отношениях, а в тех целых числах, которые появляются, потому что symfony хочет быть хорошим. В целом, я почти уверен, что это легко исправить, я просто не могу найти его...
Я думаю, вам нужно установить для метки значение false: symfony.com/doc/4.1/forms.html#параметры-типа-поля
Хорошая догадка, но не сигара :(. Это было первое, что я попробовал.






Я думаю, проблема в том, что добавленный вами
secondEntity- это просто типcollection(2-й параметр add() ), вам, возможно, придется создать свой собственный, расширивFormTypeInterface- это просто предположение