-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Description
Field type, from which system is generating collection form:
<?php
namespace Notimeo\BannersBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type;
use Vich\UploaderBundle\Form\Type\VichFileType;
/**
* Class BannerType
*/
class BannerType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('title', Type\TextType::class, ['required' => true]);
$builder->add('isPublished');
$builder->add('imageFile', VichFileType::class, ['required' => true]);
$builder->add('alt', Type\TextType::class, ['required' => true]);
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Notimeo\BannersBundle\Entity\Banner',
));
}
/**
* @return string
*/
public function getName()
{
return 'notimeo_bannersbundle_banners';
}
/**
* @return string
*/
public function getBlockPrefix()
{
return 'notimeo_bannersbundle_banners';
}
}
And what I receive on browser by clicking add a new item
:
For the record, I don't have any @Assert\NotBlank()
on banner category name. So why it's marked as "required"?
Config
easy_admin:
entities:
BannerCategory:
class: Notimeo\BannersBundle\Entity\BannerCategory
list:
fields:
- name
form:
fields:
- name
- property: 'banners'
label: 'Banners'
type: 'collection'
type_options:
entry_type: 'Notimeo\BannersBundle\Form\Type\BannerType'
by_reference: false
error_bubbling: false
Model:
<?php
namespace Notimeo\BannersBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\HasLifecycleCallbacks;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Symfony\Component\Validator\Constraints as Assert;
use Notimeo\UserBundle\Entity\User;
/**
* Category
*
* @ORM\Table(name="banners_categories")
* @ORM\Entity(repositoryClass="Notimeo\BannersBundle\Repository\BannerCategoryRepository")
* @HasLifecycleCallbacks
*/
class BannerCategory
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
// ...
/**
* @Assert\Valid
* @ORM\OneToMany(
* targetEntity="Banner",
* mappedBy="category",
* cascade={"persist","remove"},
* orphanRemoval=true
* )
* @var Banner[]
*/
private $banners;
}
<?php
namespace Notimeo\BannersBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\HasLifecycleCallbacks;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Symfony\Component\Validator\Constraints as Assert;
use Notimeo\UserBundle\Entity\User;
/**
* Banners main class.
*
* @ORM\Table(name="banners")
* @ORM\Entity(repositoryClass="Notimeo\BannersBundle\Repository\BannerRepository")
* @Vich\Uploadable
* @HasLifecycleCallbacks
*/
class Banner
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
/**
* @var string
*
* @ORM\Column(name="alt", type="string", length=255)
*/
private $alt;
/**
* @ORM\ManyToOne(targetEntity="BannerCategory", inversedBy="banners")
* @ORM\JoinColumn(nullable=false)
*/
private $category;
/**
* @ORM\Column(name="is_published", type="boolean")
*/
private $isPublished;
/**
* @ORM\Column(name="image", type="string", length=255, nullable=true)
* @var string
*/
private $image;
/**
* @Vich\UploadableField(mapping="banners_images", fileNameProperty="image")
* @Assert\NotBlank()
* @Assert\File(
* maxSize="2000K",
* mimeTypes={
* "image/jpg", "image/gif", "image/jpeg", "image/png"
* }
* )
* @var File
*/
private $imageFile;
}
Metadata
Metadata
Assignees
Labels
No labels