Twig 表单生成器渲染时间
Twig form builder rendering time
我正在使用 Twig 构建这样的表单:
Class :
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())
));
}
树枝:
<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-400 毫秒,但是当我单击此联系人页面时,总渲染时间为 800-850 毫秒。
我在开发环境中(所以我没有使用 Twig 缓存选项或 gzip 压缩)并且调试工具栏显示控制器花费了 652 毫秒,Twig 模板花费了 387 毫秒。 现在是正确的时间吗?
整个站点我只有一个控制器文件 HomeController.php(这是一个小站点,所以里面只有 9 个功能)- 有问题吗? ;这是有关联系操作的功能:
家庭控制器:
/* 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 输入和提交按钮?
此外,什么时候使用表单生成器而不是自己在视图中创建输入是可取的?
- 450ms 没有那么多,你不用担心,别忘了:
"premature optimization is root of all evil".
- 是在开发环境中吗?如果是,那么可能在生产中(使用 symfony 缓存)它会更少
- 在调试工具栏的开发环境中,您可以看到哪个部分占用最多
时间 - 那是什么意思?
- 我不确定 "hand build" 表格是什么意思,但是你
应该使用 symfony 书中的形式 - 如果你使用一些 "direct" 组装表单对象的方法而不是 formbuilder,我怀疑速度会有差异
我正在使用 Twig 构建这样的表单:
Class :
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())
));
}
树枝:
<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-400 毫秒,但是当我单击此联系人页面时,总渲染时间为 800-850 毫秒。
我在开发环境中(所以我没有使用 Twig 缓存选项或 gzip 压缩)并且调试工具栏显示控制器花费了 652 毫秒,Twig 模板花费了 387 毫秒。 现在是正确的时间吗?
整个站点我只有一个控制器文件 HomeController.php(这是一个小站点,所以里面只有 9 个功能)- 有问题吗? ;这是有关联系操作的功能:
家庭控制器:
/* 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 输入和提交按钮?
此外,什么时候使用表单生成器而不是自己在视图中创建输入是可取的?
- 450ms 没有那么多,你不用担心,别忘了: "premature optimization is root of all evil".
- 是在开发环境中吗?如果是,那么可能在生产中(使用 symfony 缓存)它会更少
- 在调试工具栏的开发环境中,您可以看到哪个部分占用最多 时间 - 那是什么意思?
- 我不确定 "hand build" 表格是什么意思,但是你 应该使用 symfony 书中的形式 - 如果你使用一些 "direct" 组装表单对象的方法而不是 formbuilder,我怀疑速度会有差异