Gij*_*rts 13 php formbuilder symfony
由于我使用symfony版本2.7(安装项目后立即出现404页面错误)的问题,我开始使用Symfony 3.0版.在一些小问题之后,我发现"app/console"被"bin/console"取代.所以我现在正在开发一个新项目,我已经构建了一个名为1的实体的新bundle
Codeit/RestaurantBundle && CodeitRestaurantBundle:Reserveren
格式是注释,实体有一个名为"naam"的id和1字段(字符串,255).我更新了模式,我生成了Codeit的实体,在成功完成之后,我生成了一个带有写操作的crud.格式再次是注释,前缀是/ reserveren.
因此,如果我访问页面web/reserveren,我将获得我的实体的显示页面.不幸的是,如果我尝试添加新条目,我收到以下错误:
给出的类型为"string","Codeit\RestaurantBundle\Form\ReserverenType"的预期参数
我的Bundle/Form/ReserverenType.php
<?php
namespace Codeit\RestaurantBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ReserverenType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('naam')
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Codeit\RestaurantBundle\Entity\Reserveren'
));
}
}
Run Code Online (Sandbox Code Playgroud)
我的实体代码
<?php
namespace Codeit\RestaurantBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Reserveren
*
* @ORM\Table(name="reserveren")
* @ORM\Entity(repositoryClass="Codeit\RestaurantBundle\Repository\ReserverenRepository")
*/
class Reserveren
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="Naam", type="string", length=255)
*/
private $naam;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set naam
*
* @param string $naam
*
* @return Reserveren
*/
public function setNaam($naam)
{
$this->naam = $naam;
return $this;
}
/**
* Get naam
*
* @return string
*/
public function getNaam()
{
return $this->naam;
}
}
Run Code Online (Sandbox Code Playgroud)
Cer*_*rad 27
表格在3.0中发生了很大变化.你现在可能最好坚持使用2.8.
您没有显示它,但我怀疑,根据错误消息,您的控制器代码如下所示:
$form = $this->createForm(new ReservernType(), $item);
Run Code Online (Sandbox Code Playgroud)
这是2.x的做事方式.3.x使用:
$form = $this->createForm(ReservernType::class, $item);
Run Code Online (Sandbox Code Playgroud)
http://symfony.com/doc/current/book/forms.html#creating-form-classes