提交后返回表单的帖子值

时间:2018-08-14 14:39:38

标签: php forms symfony symfony4

如何获取已发布表单的值,例如在控制器中,我检查是否已经有用户名,如果它重定向回呈现该表单的路由,那么如何获取最后的发布值以不再次填充此表单的数据。

控件示例:

    /**
 * @Route("/dystrybutor/pracownicy/add", name="dystrybutor_pracownicy_add")
 */

public function new(UserManagerInterface $userManager, EntityManagerInterface $entityManager, Request $request)
{


$pracownik = new Pracownik();
$form = $this->createForm(PracownikType::class, $pracownik);






    $form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
    $id = $this->getUser()->getDystrybutorId();

    $username = $form["username"]->getData();
    $password = $form["password"]->getData();
    $email = $form["email"]->getData();



    $userManager = $this->get('fos_user.user_manager');
    $checkUser = $userManager->findUserByUsername($username);
    if($checkUser) {
                $this->addFlash(
                    'danger',
                    'Login jest już zajęty!'
            );

            return $this->redirectToRoute('dystrybutor_pracownicy_add');
    }
    else {

1 个答案:

答案 0 :(得分:0)

通常,您应该将 $ pracownik 对象传递给您重定向到的操作,然后在创建表单时将其作为参数传递。这可以通过很多方法来完成,但是我建议您在控制器中使用forward method

public function new(UserManagerInterface $userManager, EntityManagerInterface $entityManager, Request $request, Pracownik $pracownik = null){

    $pracownik = $pracownik ?? new Pracownik();
    $form = $this->createForm(PracownikType::class, $pracownik);
    ...
    if($checkUser) {
        $this->addFlash('danger','Login jest już zajęty!');

        return $this->forward('App\Controller\DystrybutorController::new', array(
            'pracownik'  => $pracownik
        ));
    }