【发布时间】:2021-10-10 10:32:38
【问题描述】:
我正在学习 symfony 5。我有一个控制器,但我想将逻辑分解为工厂和存储库。我在使用 FormBuilder 时遇到了一个小问题。如果工厂中没有 Formbuilder,它会通过 Request,在这种情况下是通过 Form。 这个解决方案确实适用于 Form,但我做得对吗?
带有请求的TestFactory.php
class TestFactory
{
public function create(Request $request)
{
$test = new Test();
$test->setTest1($request->get('test1');
$test->setTest2($request->get('test2');
return $test;
}
}
TestController.php
class TestController extends AbstractController
{
public function test(Request $request, TestFactory $factory, TestRepository $repository):Response
{
$form = $this->createForm(TestType::class);
$form->handleRequest($request);
if ($form->isSubmitted()) {
$test = $factory->create($form);
$repository->save($test);
}
return $this->render('test.html.twig', [
'form' => $form->createView()
]);
}
}
TestFactory.php
class TestFactory
{
public function create(Form $form)
{
$test = new Test();
$test->setTest1($form->get('test1')->getData());
$test->setTest2($form->get('test2')->getData());
return $test;
}
}
TestRepository.php
class TestRepository extends ServiceEntityRepository
{
private $entityManager;
public function __construct(ManagerRegistry $registry, EntityManagerInterface $entityManager)
{
parent::__construct($registry, Test::class);
$this->entityManager = $entityManager;
}
public function save(Test $test)
{
$this->entityManager->persist($test);
$this->entityManager->flush();
}
}
【问题讨论】:
标签: php symfony factory symfony5