在symfony中重载表单

时间:2014-12-02 01:09:13

标签: forms symfony overloading

我想重载一个FOSComment包的形式。我想知道我必须创建一个新的评论或者我是否可以从我的工作/主要包中创建它?

抱歉我的英文。

谢谢你, 大卫

namespace FOS\CommentBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class CommentType extends AbstractType
{
    private $commentClass;

    public function __construct($commentClass)
    {
        $this->commentClass = $commentClass;
    }

    /**
     * Configures a Comment form.
     *
     * @param FormBuilderInterface $builder
     * @param array                $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('body', 'textarea')
                ->add('lien', 'text', array('required'      => false,
                                            'empty_data'    => null));
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        parent::setDefaultOptions($resolver);
        $resolver->setDefaults(array(
            'data_class' => $this->commentClass,
        ));
    }

    public function getName()
    {
        return "fos_comment_comment";
    }
}

目前我将我的现场留置权直接放在供应商档案中,我知道这不是好办法。

1 个答案:

答案 0 :(得分:0)

我认为您需要做的就是覆盖要重载的表单的服务定义:

e.g。 (如果你有services.yml)

fos_comment.form_type.comment.default
    class: Project/MyBundle/Form/CustomFormType
    arguments:[%fos_comment.model.comment.class%]
    tags:
        - { name: form.type, alias: fos_comment_comment }