在Symfony2中创建服务表格

马库斯·莱安德(Marcus Leander)

我正在尝试通过我的服务创建表单,但是却出现此错误

这是控制器中的代码摘录

$service = $this->get('questions_service');
$form_question = $service->createQuestionForm($question, $this->generateUrl('create_question', array('adId' => $ad->getId())));

这是我的职责

public function createQuestionForm($entity, $route)
{
    $form = $this->createForm(new QuestionType(), $entity, array(
        'action' => $route,
        'method' => 'POST',
    ));

    $form
        ->add('submit', 'submit', array('label' => '>', 'attr' => array('class' => 'button button-question button-message')));

    return $form;
}
杰森·罗曼(Jason Roman)

createForm()函数是Symfony的Controller类中的别名您将无法从服务中访问它。您需要将Symfony容器注入服务或注入form.factory服务。例如:

services:
    questions_service:
        class:        AppBundle\Service\QuestionsService
        arguments:    [form.factory]

然后在你的课上:

use Symfony\Component\Form\FormFactory;

class QuestionsService
{
    private $formFactory;

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

    public function createQuestionForm($entity, $route)
    {
        $form = $this->formFactory->createForm(new QuestionType(), $entity, array(
            'action' => $route,
            'method' => 'POST',
        ));

        $form
            ->add('submit', 'submit', array(
                'label' => '>',
                'attr' => array('class' => 'button button-question button-message')
        ));

        return $form;
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章