我在使用Symfony创建的表单中遇到了一个问题,就是如何显示文本框。
文本框出现在html中,但是没有显示 display: block
在css中。它在css中什么都没有,要清楚。
当我在CSS中添加一个 display:block
在自己的css中,它只是被chromefirefox剥离了。
这个问题只发生在我从一个单独的类中创建表单的时候,而不是在控制器的函数中创建表单的时候。
以下是我的代码。
AdController.php
<?php
namespace App\Controller;
use App\Entity\Ad;
use App\Form\AdType;
use App\Repository\AdRepository;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class AdController extends AbstractController
{
/**
* Create ad
*
* @Route("/ads/new", name="ads_create")
*
* @return Response
*/
public function create(){
$ad = new Ad();
$form = $this->createForm(AdType::class, $ad);
return $this->render('ad/new.html.twig', [
'form' => $form->createView()
]);
}
}
广告类型.php
<?php
namespace App\Form;
use App\Entity\Ad;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
class AdType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title')
->add('slug')
->add('price')
->add('introduction')
->add('content', TextareaType::class, [
'attr' => array('cols' => '5', 'rows' => '5')])
->add('coverImage')
->add('rooms')
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Ad::class,
]);
}
}
而小树枝 。
{% extends 'base.html.twig' %}
{% form_theme form 'bootstrap_4_layout.html.twig' %}
{% block title %}Create ad{% endblock %}
{% block body %}
<div class="container">
<h1>lorem ipsum</h1>
{{form_start(form)}}
{{ form(form) }}
{{form_end(form)}}
</div>
{% endblock %}
我试了很多东西,但我还是不明白如何解决这个问题。谁有办法解决这个问题?
先谢谢你!
我的第一个猜测是 content
是某种保留字。
当你重命名这个属性时会发生什么?
此外,尝试单独渲染表单小部件,例如.NET Framework 2.0。
{{ form_widget(form.title) }}
{{ form_widget(form.slug) }}
...
{{ form_widget(form.content) }}
...
如果这给你带来任何错误--你将有一些更多的信息可以调试