Symfony 2,Symfony 3.如何改變多對多關係在窗體中的顯示方式?例如,如何使用複選框在一行中顯示多對多關係實體標識,而不是默認的複選框列?如何使用Symfony2或Symfony 3自定義表單中的多對多字段?
任何人都可以參考一個示例窗體?
我在樹枝模板嘗試:
{% for admin in form.admins %}
{{ admin.username }} //gives error that method GetUsername is not found
{{ form_widget(form.offsetGet(admin.username)) }}, //gives error that method GetUsername is not found
{% endfor %}
的EventType.php
<?php
namespace MeetingBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
class EventType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', 'text', array(
'attr' => array('style' => 'width: 500px',), 'data' => 'title',))
->add('keywords', 'text', array(
'attr' => array('style' => 'width: 500px',), 'data' => 'keyow',))
->add('zip', 'text', array(
'attr' => array('style' => 'width: 500px',), 'data' => 'zip',))
->add('latitude', 'text', array(
'attr' => array('style' => 'width: 500px',), 'data' => 'latitude',))
->add('longitude', 'text', array(
'attr' => array('style' => 'width: 500px',), 'data' => 'longitude',))
->add('starttimeInt', 'hidden', array('data' => '0',))
->add('endtimeInt', 'hidden', array('data' => '0',))
->add('starttimeStr', 'text', array(
'attr' => array('style' => 'width: 500px',), 'data' => '21-12-2015 4:15 Europe/London',))
->add('endtimeStr', 'text', array(
'attr' => array('style' => 'width: 500px',), 'data' => '21-12-2015 4:15 Europe/London',))
->add('address', 'textarea', array(
'label' => 'Address starting with post code',
'data' => 'BR13RX',
'attr' => array('rows' => 2, 'cols' =>80,),))
->add('details', 'textarea', array(
'label' => 'Details',
'data' => 'x',
'attr' => array('rows' => 20, 'cols' =>80,),
'max_length' => '5000'))
->add('contacts', 'textarea', array(
'label' => 'Contact methods',
'data' => 'x',
'attr' => array('rows' => 4, 'cols' =>80,),
'max_length' => '4000') )
->add('admins', 'entity', array(
'class' => 'MeetingBundle\Entity\User',
'property' => 'username',
'multiple' => true,
'expanded' => true ))
->add('attendees', 'entity', array(
'class' => 'MeetingBundle\Entity\User',
'property' => 'username',
'multiple' => true,
'expanded' => true )) ;
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array('data_class' => 'MeetingBundle\Entity\Event'));
}
/**
* @return string
*/
public function getName()
{
return 'meetingbundle_event';
}
}
謝謝,我會在一週內回覆,現在忙 – olga