Symfony的3.20
當你建立你的FormType,在控制器執行&動作像下面的路線,用「如果($ formRegister-> isSubmitted()& & $ formRegister-> getClickedButton( '窗口2')& & ...)」
class WelcomeController extends Controller
{
/**
* @Route("/welcome", name="welcome")
*/
public function welcomeAction(Request $request)
{
$uLogin = new User();
$formLogin = $this->createForm(LoginUserFormType::class, $uLogin);
$uRegister = new User();
$formRegister = $this->createForm(UserRegistrationFormType::class, $uRegister);
$authenticationUtils = $this->get('security.authentication_utils');
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
if ($request->isMethod('post')){
$formLogin->handleRequest($request);
$formRegister->handleRequest($request);
if($formLogin->isSubmitted() && $formLogin->getClickedButton('form1')){
return $this->redirectToRoute('login_success');
}
if ($formRegister->isSubmitted() && $formRegister->getClickedButton('form2') && $formRegister->isValid()) {
$password = $this->get('security.password_encoder')
->encodePassword($uRegister, $uRegister ->getPlainPassword());
$uRegister ->setPassword($password);
$uRegister->setRole('ROLE_USER');
$em = $this ->getDoctrine() ->getManager();
$em -> persist($uRegister);
$em -> flush();
return $this->redirectToRoute('register_success');
}
}
return $this->render(
'form/welcome.html.twig',
array(
'form1' => $formLogin -> createView(),
'form2' => $formRegister -> createView(),
'last_username' => $lastUsername,
'error' => $error,
)
);
}
建立你的路由,那就是它: - )
非常感謝@mahok!我想知道如何在$ this-> createMainForm中創建表單類型?因爲它在兩個不同的實體上嵌入了兩種不同的類型... – Mick
您只需添加兩個實體:'$ builder-> add('entity1','entity',array('class'=> ...) '在MainFormType中。 – dbrumann
但是這是一個實體字段類型...它將顯示保存在Entity1中的所有對象的選擇列表......這並不完全是我在實際完成後我所要做的是顯示一個用於entity1的表單,同時顯示entity2的表單,而不是entity1中保存的對象列表以及entity2中保存的對象列表。無論如何,您創建模型的想法似乎是要走的路。我正在試一試,並會相應地接受你的回答:)非常感謝@mahok。很好的答案很可能引導我朝着一個可行的解決方案:) – Mick