繁体   English   中英

在Symfony2中创建服务表单

[英]Create form for service in Symfony2

我正在尝试从我的服务创建表单,但是给出了这个错误

这是控制器中的代码摘录

$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;
}

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;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM