Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace AppBundle\Admin;
- use Ivory\CKEditorBundle\Form\Type\CKEditorType;
- use Sonata\AdminBundle\Admin\AbstractAdmin;
- use Sonata\AdminBundle\Datagrid\DatagridMapper;
- use Sonata\AdminBundle\Datagrid\ListMapper;
- use Sonata\AdminBundle\Form\FormMapper;
- use Sonata\AdminBundle\Form\Type\ModelAutocompleteType;
- use Sonata\AdminBundle\Form\Type\ModelType;
- use Symfony\Bridge\Doctrine\Form\Type\EntityType;
- use Symfony\Component\Form\Extension\Core\Type\FileType;
- #use UserBundle\Entity\User;
- use AppBundle\Form\AreaType;
- use AppBundle\Entity\Picture;
- #use Sonata\AdminBundle\Controller\CRUDController;
- class CampgroundAdmin extends AbstractAdmin
- {
- protected function configureFormFields(FormMapper $form)
- {
- //$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'Unable to access this page!');
- $form
- ->tab('label.campground.admin.tab.campground')
- ->with('label.campground.admin.tab.campground', array('class' => 'col-md-9'))
- ->add('name', null, array(
- 'label' => 'label.campground.admin.name',
- ))
- ->add('street', null, array(
- 'label' => 'label.campground.admin.street',
- ))
- ->add('zip', null, array(
- 'label' => 'label.campground.admin.zip',
- ))
- ->add('town', null, array(
- 'label' => 'label.campground.admin.town',
- ))
- ->add('country', null, array(
- 'label' => 'label.campground.admin.country',
- ))
- ->add('land', null, array(
- 'label' => 'label.campground.admin.land',
- ))
- ->add('longitude', null, array(
- 'label' => 'label.campground.admin.longitude',
- ))
- ->add('latitude', null, array(
- 'label' => 'label.campground.admin.latitude',
- ))
- ->add('description', CKEditorType::class, array(
- 'label' => 'label.campground.admin.description',
- ))
- ->add('picture', 'sonata_type_collection', array(
- 'by_reference' => true,
- 'label' => false,
- 'type_options' => array(
- 'delete' => true),
- 'btn_add' => 'Add new Images',
- "required" => false
- ))
- #->add('pictures', null, array ( 'label' => 'lable.campground.admin.image_'))
- ->end()
- ->with('label.campground.admin.meta', array('class' => 'col-md-3'))
- /*
- ->add('user', 'sonata_type_model_autocomplete', array(
- 'label' => 'label.campground.admin.user',
- 'property' => 'username',
- 'to_string_callback' => function($entity, $property) {
- return $entity->getUsername();
- },
- ))
- */
- ->add('homepage', null, array(
- 'label' => 'label.campground.admin.homepage',
- ))
- ->add('priceAdults', null, array(
- 'label' => 'label.campground.admin.priceAdults',
- ))
- ->add('priceChilds', null, array(
- 'label' => 'label.campground.admin.priceChilds',
- ))
- ->add('deposit', null, array(
- 'label' => 'label.campground.admin.deposit',
- ))
- ->add('maxPersons', null, array(
- 'label' => 'label.campground.admin.maxPersons',
- ))
- ->add('size', null, array(
- 'label' => 'label.campground.admin.size',
- ))
- ->add('area', AreaType::class, array(
- 'label' => 'lable.campground.admin.area'
- ))
- ->add('fireplace', null, array(
- 'label' => 'label.campground.admin.fireplace',
- ))
- ->add('parking', null, array(
- 'label' => 'label.campground.admin.parking',
- ))
- ->add('house', null, array(
- 'label' => 'label.campground.admin.house',
- ))
- ->add('kitchen', null, array(
- 'label' => 'label.campground.admin.kitchen',
- ))
- ->add('sanitary', null, array(
- 'label' => 'label.campground.admin.sanitary',
- ))
- ->add('lounge', null, array(
- 'label' => 'label.campground.admin.lounge',
- ))
- ->add('water', null, array(
- 'label' => 'label.campground.admin.water',
- ))
- ->add('energy', null, array(
- 'label' => 'label.campground.admin.energy',
- ))
- ->end()
- ->end()
- ->tab('label.campground.admin.tab.contact')
- ->with('label.campground.admin.tab.contact')
- ->add('contactNameAffix', null, array(
- 'label' => 'label.campground.admin.contactNameAffix',
- ))
- ->add('contactName', null, array(
- 'label' => 'label.campground.admin.contactName',
- ))
- ->add('contactStreet', null, array(
- 'label' => 'label.campground.admin.contactStreet',
- ))
- ->add('contactZip', null, array(
- 'label' => 'label.campground.admin.contactZip',
- ))
- ->add('contactTown', null, array(
- 'label' => 'label.campground.admin.contactTown',
- ))
- ->add('contactPhone', null, array(
- 'label' => 'label.campground.admin.contactPhone',
- ))
- ->add('contactMail', null, array(
- 'label' => 'label.campground.admin.contactMail',
- ))
- ->end()
- ->end()
- ->tab('label.campground.admin.tab.comments')
- ->with('label.campground.admin.tab.comments')
- ->add('comments', null, array(
- 'label' => 'label.campground.admin.comments',
- ))
- ->end()
- ;
- }
- protected function configureDatagridFilters(DatagridMapper $filter)
- {
- // parent::configureDatagridFilters($filter); // TODO: Change the autogenerated stub
- $filter
- ->add('name')
- ;
- }
- protected function configureListFields(ListMapper $list)
- {
- $list
- ->addIdentifier('name', null, array(
- 'label' => 'label.campground.admin.name',
- ))
- ->add('street', null, array(
- 'label' => 'label.campground.admin.street',
- ))
- ->add('zip', null, array(
- 'label' => 'label.campground.admin.zip',
- ))
- ->add('town', null, array(
- 'label' => 'label.campground.admin.town',
- ))
- ->add('country', null, array(
- 'label' => 'label.campground.admin.country',
- ))
- ;
- }
- public function prePersist($page) {
- $this->manageEmbeddedImageAdmins($page);
- }
- public function preUpdate($page) {
- $this->manageEmbeddedImageAdmins($page);
- }
- private function manageEmbeddedImageAdmins($page) {
- // Cycle through each field
- foreach ($this->getFormFieldDescriptions() as $fieldName => $fieldDescription) {
- // detect embedded Admins that manage Images
- if ($fieldDescription->getType() === 'sonata_type_admin' &&
- ($associationMapping = $fieldDescription->getAssociationMapping()) &&
- $associationMapping['targetEntity'] === 'AppBundle\Entity\Picture'
- ) {
- $getter = 'get' . $fieldName;
- $setter = 'set' . $fieldName;
- /** @var Image $image */
- $image = $page->$getter();
- if ($image) {
- if ($image->getFile()) {
- // update the Image to trigger file management
- $image->refreshUpdated();
- } elseif (!$image->getFile() && !$image->getImage()) {
- // prevent Sf/Sonata trying to create and persist an empty Image
- $page->$setter(null);
- }
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment