src/Cms/ModuleBundle/Form/StandardMetadataType.php line 18

Open in your IDE?
  1. <?php
  2. namespace Cms\ModuleBundle\Form;
  3. use Cms\ModuleBundle\Entity\StandardMetadata;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\CallbackTransformer;
  6. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  7. use Symfony\Component\Form\FormBuilderInterface;
  8. use Symfony\Component\OptionsResolver\OptionsResolver;
  9. use Symfony\Component\Form\Extension\Core\Type\TextType;
  10. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  11. /**
  12.  * Class StandardMetadataType
  13.  * @package Cms\ModuleBundle\Form
  14.  */
  15. class StandardMetadataType extends AbstractType
  16. {
  17.     /**
  18.      * {@inheritdoc}
  19.      */
  20.     public function buildForm(FormBuilderInterface $builder, array $options)
  21.     {
  22.         $builder
  23.             ->add('title'TextType::class, array(
  24.                 'required' => false,
  25.                 'label' => 'Page title',
  26.                 'helpText' => true,
  27.                 'attr' => [
  28.                     'placeholder' => $options['placeholderTitle'],
  29.                 ],
  30.             ))
  31.             ->add('description'TextareaType::class, array(
  32.                 'required' => false,
  33.                 'label' => 'Page description',
  34.                 'helpText' => true,
  35.             ))
  36.             ->add('keywords'TextType::class, array(
  37.                 'label' => 'Page keywords',
  38.                 'required' => false,
  39.                 'helpText' => true,
  40.             ))
  41.             ->add('robots'ChoiceType::class, array(
  42.                 'required' => false,
  43.                 'label' => 'Search robots',
  44.                 'multiple' => false,
  45.                 'helpText' => true,
  46.                 'empty_data' => null,
  47.                 'placeholder' => 'All - Index this page and follow links (default)',
  48.                 'choices' => [
  49.                     'None - Do not index or follow links on this page' => 'noindex,nofollow',
  50.                     'No Index - Do not index this page' => 'noindex',
  51.                     'No Follow - Do not follow links on this page' => 'nofollow',
  52.                 ],
  53.                 /*
  54.                 'choice_label' => function ($choice, $key, $value) {
  55.                     return sprintf(
  56.                         'app.cms.module.standard_metadata.robots.%s',
  57.                         $choice
  58.                     );
  59.                 },
  60.                 */
  61.             ))
  62.         ;
  63.         $builder->get('keywords')->addModelTransformer(new CallbackTransformer(
  64.             function ($original) {
  65.                 return is_null($original) ? '' implode(', '$original);
  66.             },
  67.             function ($submitted) {
  68.                 return array_map(
  69.                     function ($value) {
  70.                         return trim($value);
  71.                     },
  72.                     ( ! is_string($submitted)) ? [] : explode(','$submitted)
  73.                 );
  74.             }
  75.         ));
  76.         $builder->get('robots')->addModelTransformer(new CallbackTransformer(
  77.             function ($original) {
  78.                 return is_null($original) ? '' implode(','$original);
  79.             },
  80.             function ($submitted) {
  81.                 return array_map(
  82.                     function ($value) {
  83.                         return trim($value);
  84.                     },
  85.                     ( ! is_string($submitted)) ? [] : explode(','$submitted)
  86.                 );
  87.             }
  88.         ));
  89.     }
  90.     /**
  91.      * {@inheritdoc}
  92.      */
  93.     public function configureOptions(OptionsResolver $resolver)
  94.     {
  95.         $resolver->setDefaults(array(
  96.             'categoryName' => 'Metadata',
  97.             'embedded' => true,
  98.             'data_class' => StandardMetadata::class,
  99.             'placeholderTitle' => null,
  100.         ));
  101.     }
  102. }