不呈现 symfony 2 表单输入字段
symfony 2 form input fields are not rendered
我正在尝试创建简单的表单,但由于某些原因未呈现输入字段。源代码显示呈现了表单的打开和关闭标记,但没有呈现输入字段本身。
这是代码
namespace SDProjectBundle\Forms;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class UserForm extends AbstractType
{
public function formBuilder(FormBuilderInterface $builder, array $options)
{
$builder->add('email', 'text')
->add('password', 'password')
->add('Send', 'submit');
}
public function getName()
{
return 'app_users';
}
}
namespace SDProjectBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use SDProjectBundle\Forms\UserForm;
use SDProjectBundle\Entity\User;
class UsersController extends Controller
{
public function addAction(Request $request)
{
$form = $this->createForm(new UserForm(), new User());
return $this->render('SDProjectBundle:Users:add.html.twig', array(
'form' => $form->createView(),
));
}
}
add.html.twig
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
我做错了什么?
如果你想渲染表单组件试试
{{ form_widget(form) }}
而不是
{{ form_label(form) }}
如果您只想呈现字段的标签,您需要将字段指定为:
{{ form_label(form.email) }}
您的表单的完整手动渲染版本可以是:
{{ form_start(form) }}
{{ form_errors(form) }}
<div>
{{ form_label(form.email) }}
{{ form_errors(form.email) }}
{{ form_widget(form.email) }}
</div>
<div>
{{ form_label(form. password) }}
{{ form_errors(form. password) }}
{{ form_widget(form. password) }}
</div>
<div>
{{ form_widget(form. Send) }}
</div>
{{ form_end(form) }}
在你的 TWIG 中试试这个:
{% block form_row %}
{% spaceless %}
<div class="form-group">
{{ form_label(form) }}
<div>
{{ form_widget(form) }}
</div>
</div>
{% endspaceless %}
{% endblock form_row %}
您在表单中实现了错误的方法class:您需要实现自定义表单类型的buildForm
方法。
实际上,在 UserForm
class 中,您需要输入:
public function buildForm(FormBuilderInterface $builder, array $options)
而不是
public function formBuilder(FormBuilderInterface $builder, array $options)
希望对您有所帮助
我正在尝试创建简单的表单,但由于某些原因未呈现输入字段。源代码显示呈现了表单的打开和关闭标记,但没有呈现输入字段本身。
这是代码
namespace SDProjectBundle\Forms;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class UserForm extends AbstractType
{
public function formBuilder(FormBuilderInterface $builder, array $options)
{
$builder->add('email', 'text')
->add('password', 'password')
->add('Send', 'submit');
}
public function getName()
{
return 'app_users';
}
}
namespace SDProjectBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use SDProjectBundle\Forms\UserForm;
use SDProjectBundle\Entity\User;
class UsersController extends Controller
{
public function addAction(Request $request)
{
$form = $this->createForm(new UserForm(), new User());
return $this->render('SDProjectBundle:Users:add.html.twig', array(
'form' => $form->createView(),
));
}
}
add.html.twig
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
我做错了什么?
如果你想渲染表单组件试试
{{ form_widget(form) }}
而不是
{{ form_label(form) }}
如果您只想呈现字段的标签,您需要将字段指定为:
{{ form_label(form.email) }}
您的表单的完整手动渲染版本可以是:
{{ form_start(form) }}
{{ form_errors(form) }}
<div>
{{ form_label(form.email) }}
{{ form_errors(form.email) }}
{{ form_widget(form.email) }}
</div>
<div>
{{ form_label(form. password) }}
{{ form_errors(form. password) }}
{{ form_widget(form. password) }}
</div>
<div>
{{ form_widget(form. Send) }}
</div>
{{ form_end(form) }}
在你的 TWIG 中试试这个:
{% block form_row %}
{% spaceless %}
<div class="form-group">
{{ form_label(form) }}
<div>
{{ form_widget(form) }}
</div>
</div>
{% endspaceless %}
{% endblock form_row %}
您在表单中实现了错误的方法class:您需要实现自定义表单类型的buildForm
方法。
实际上,在 UserForm
class 中,您需要输入:
public function buildForm(FormBuilderInterface $builder, array $options)
而不是
public function formBuilder(FormBuilderInterface $builder, array $options)
希望对您有所帮助