私はいろいろ調べて、限られた答えしか見つけられませんでした。
フォームを作成しようとしています。このフォームの目的は、メンバーがサイトに他の人を推薦できるようにすることです。first_name、last_name、および email を入力する必要があります。問題は、一度に複数のメールを送信できるようにすることです。したがって、おそらく「別の追加」という別のボタンがあり、フォーム (first_name、last_name、および email) が複製されます。
私はコレクションを見て、allow_add を許可し、プロトタイプを作成できるため、これは素晴らしいオプションだと思いましたが、それを機能させる方法がわかりません。埋め込みも検討しましたが、すぐに対応や検証を求めているわけではないので、これが解決策ではないと思います。
この作業を行うためにjavascriptが使用されることはわかっています。
私がこれまでに持っているもの... 私が近くにいるなら教えてください。
これはそれが呼ばれるところです。
public function referralFormAction(Request $request, $hash)
{
if (isset($hash)) {
$referral = new Referrals();
$referralForm = $this->createFormBuilder($referral)
//I know that 'email' needs to be replaced with something different, an object?
->add('email', 'collection', array(
'required' => false,
'allow_add' => true,
'prototype' => true,
//Not sure if I can set type like this.
'type' => new ReferralType(),
))
->getForm();
$referralForm->handleRequest($request);
if ($referralForm->isValid()) {
//do something
}
return $this->render('FuelFormBundle:Default:referralForm.html.twig', array('referralForm' => $referralForm->createView()));
} else {
throw $this->createNotFoundException('The product does not exist');
}
}
これがタイプです
class ReferralType extends AbstractType{
public function buildForm(FormBuilderInterface $builder, array $options){
$builder->add('first_name', 'text', array());
$builder->add('last_name', 'text', array());
$builder->add('email', 'email', array());
$builder->add('Send', 'submit');
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Fuel\FormBundle\Entity\Referrals',
));
}
public function getName()
{
return 'referral';
}