[英]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.