Я использую Twig для создания формы, как это делает: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-400 мс, но когда я нажимаю на эту страницу контакта, общее время рендеринга составляет 800-850 мс.
Я в среде dev (так что я не использую параметр кэша Twig или сжатие gzip), а панель инструментов отладки говорит, что контроллер взял 652 мс и шаблоны Twig 387ms. Правильное ли это время?
Debug статистика скриншот: here и here
У меня есть только один контроллер файл 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("[email protected]","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 и кнопкой отправки?
Также, , когда целесообразно использовать конструктор форм вместо того, чтобы создавать входы сами по себе?
Благодарим вас за ответ. Я отредактировал свой вопрос, чтобы правильно рассказать вам все подробности. – cyclone200
652ms кажется много для контроллера «контактной формы», можете ли вы разместить здесь весь код контроллера? – Miro
также убедитесь, что вы не запускаете веб-сайт на очень медленном сервере ... но если статические страницы занимают 450 мс, тогда что-то не так, либо весь ваш стек PHP на вашем сервере медленный (очень слабый сервер или сервер с огромной нагрузкой - это общий сервер?), или у вас есть что-то, что выполняет каждый запрос - возможно, какой-то внешний пакет или какой-либо прослушиватель запросов? – Miro