【问题标题】:Symfony, generate slug from submitted formSymfony,从提交的表单生成 slug
【发布时间】:2018-04-17 18:19:43
【问题描述】:

我有这个表单,我想修改它以添加一个应该从用户提交的数据生成的 slug 字段。

就像用户选择的类别(名称)和内容中的随机词,我还使用Slugify 来清理 URL:

有什么想法吗?

 $u = $this->getUser();
 $sl = new Slugify();
 $task = new AdsList();
 $task->setPostXpr(new \DateTime('+1 month'));
 $task->setSlug($ans);
 $task->setPostedBy($u);
 $form = $this->createFormBuilder($task)
     ->add('title', TextType::class)
     ->add('content', TextareaType::class)
     ->add('category', EntityType::class, array(
         // query choices from CategoryAd.Name
         'class' => 'AppBundle:CategoryAd',
         'choice_label' => 'name',
     ))
     ->add('postXpr', DateType::class, array(
         'widget' => 'single_text',
         // this is actually the default format for single_text
         'format' => 'yyyy-MM-dd',
         'label' => 'Post Expire',
     ))
     ->add('save', SubmitType::class, array('label' => 'Create Post'))
        ->getForm();

【问题讨论】:

标签: php forms symfony security slugify


【解决方案1】:

你只需要将映射信息添加到实体的slug字段而不是表单,然后使用cocur/slugify

使用 cocur

if ($form->isSubmitted() && $form->isValid()) {
    $em = $this->getDoctrine()->getManager();
    $entity->setSlug($this->get('cocur_slugify')->slugify($entity->getName()));
    $em->persist($entity);
    $em->flush();
    return $this->redirectToRoute('my_route_to_redirect', array('slug' => $entity->getSlug()));
        }

或者您可以使用@Alexander Br 的学说扩展。已发布

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 2017-04-28
    • 1970-01-01
    • 2014-08-31
    • 2021-11-13
    相关资源
    最近更新 更多