我使用Twig构建这样的表单:
上课:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text', array(
'constraints' => array(new Assert\NotBlank(), new Assert\Length(array('min' => 5)))
))
->add('mail', 'email', array(
'constraints' => array(new Assert\NotBlank(), new Assert\Email())
));
}
Twig:
<div class="col-xs-12 col-less-padding">
{{ form_start(contactForm, { 'attr': {'class': 'form-horizontal pull-left'} }) }}
<div class="form-group">
{{ form_label(contactForm.name, null, { 'label_attr': {
'class': 'col-sm-4 control-label'
}}) }}
<div class="col-sm-6">
{{ form_widget(contactForm.name, { 'attr': {
'class': 'form-control'
}}) }}
</div>
</div>
<div class="form-group">
{{ form_label(contactForm.mail, null, { 'label_attr': {
'class': 'col-sm-4 control-label'
}}) }}
<div class="col-sm-6">
{{ form_widget(contactForm.mail, { 'attr': {
'class': 'form-control'
}}) }}
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-4 col-sm-3">
<input type="submit" class="btn btn-primary" value="Send">
</div>
</div>
{{ form_end(contactForm) }}
</div>
但它看起来确实会影响我的网页的渲染时间。例如,静态页面的总渲染时间为350-400ms,但当我点击此联系页面时,总渲染时间为800-850ms。
我在开发环境中(所以我没有使用Twig缓存选项或gzip压缩),调试工具栏说控制器需要652ms和Twig模板387ms。 这是正确的时间吗?
我只有一个控制器文件HomeController.php用于整个网站(它是一个小网站,因此其中只有9个功能) - 是一个问题吗?;这是关于联系行动的功能:
HomeController:
/* 8 others functions */
public function contactAction(Request $request, Application $app) {
$book_id = $app['dao.home']->returnBookId();
$contactForm = $app['form.factory']->create(new ContactType());
$contactForm->handleRequest($request);
if ($contactForm->isSubmitted() && $contactForm->isValid()) {
$formData = $contactForm->getData();
$msg = 'New message from'.$formData['name'].'('.$formData['mail'].') <br><br>';
$msg .= 'Content : '.$formData['content'].'';
mail("mail@gmail.com","New message",$msg);
$app['session']->getFlashBag()->add('success', 'Your message was sent successfully.');
}
return $app['twig']->render('contact.html.twig', array(
'active_page' => 'contact',
'book_id' => $book_id,
'contactForm' => $contactForm->createView()));
}
所以使用表单构建器是一种构建表单的好方法吗?或者我应该自己使用两个html输入和一个提交按钮构建表单吗?
另外,何时建议使用表单构建器而不是在视图中自己创建输入?
答案 0 :(得分:1)