【发布时间】:2014-07-23 15:47:25
【问题描述】:
我需要验证我的表格。我的表格有两个集合,但我无法验证它们...... 你知道我是怎么做到的吗?
卡入口类型:
namespace Dim\RestaurantBundle\Form\Type;
class CardEntryType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('cardEntryContent', 'collection', array(
'type' => 'text',
'prototype' => true,
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
'options' => array(
'required' => false,
'attr' => array(
'class' => 'text',
'placeholder' => 'Nom de l\'entrée...',
'pattern' => '.{0,55}'),
),
))
->add('cardEntryPrice', 'collection', array(
'type' => 'text',
'allow_add' => true,
'prototype' => true,
'options' => array(
'required' => false,
'attr' => array(
'class' => 'text',
'placeholder' => 'Prix de l\'entrée...',
'pattern' => '.{0,10}'),
),
));
}
public function getDefaultOptions(array $options)
{
return array(
'data_class' => 'Dim\RestaurantBundle\Entity\TCardEntry',
);
}
public function getName()
{
return 'cardEntry';
}
}
实体的模型:
namespace Dim\RestaurantBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;
/**
* TCardEntry
*
* @ORM\Table(name="t_card_entry")
* @ORM\Entity
*/
class TCardEntry
{
/**
* @var integer
*
* @ORM\Column(name="card_entry_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $cardEntryId;
/**
* @var string
*
* @Assert\Length(
* min = "0",
* max = "55",
* minMessage = "Votre nom ne peut faire moins de {{ limit }} caractères.",
* maxMessage = "Votre nom ne peut faire plus de {{ limit }} caractères."
* )
*
* @ORM\Column(name="card_entry_content", type="text", nullable=false)
*/
private $cardEntryContent;
/**
* @var string
*
* @Assert\Length(
* min = "0",
* max = "10",
* minMessage = "Votre nom ne peut faire moins de {{ limit }} caractères.",
* maxMessage = "Votre nom ne peut faire plus de {{ limit }} caractères."
* )
*
* @ORM\Column(name="card_entry_price", type="string", length=10, nullable=false)
*/
private $cardEntryPrice;
/**
* Get cardEntryId
*
* @return integer
*/
public function getCardEntryId()
{
return $this->cardEntryId;
}
/**
* Set cardEntryContent
*
* @param string $cardEntryContent
* @return TCardEntry
*/
public function setCardEntryContent($cardEntryContent)
{
$this->cardEntryContent = $cardEntryContent;
return $this;
}
/**
* Get cardEntryContent
*
* @return string
*/
public function getCardEntryContent()
{
return $this->cardEntryContent;
}
/**
* Set cardEntryPrice
*
* @param string $cardEntryPrice
* @return TCardEntry
*/
public function setCardEntryPrice($cardEntryPrice)
{
$this->cardEntryPrice = $cardEntryPrice;
return $this;
}
/**
* Get cardEntryPrice
*
* @return string
*/
public function getCardEntryPrice()
{
return $this->cardEntryPrice;
}
}
我的控制器:
namespace Dim\RestaurantBundle\Controller;
class AdministrationController extends Controller
{
public function indexAction()
{
return $this->render('DimRestaurantBundle:Administration/Home:index.html.twig');
}
public function cardEntryAction(Request $request)
{
$TCardEntry = new TCardEntry();
$form = $this->createForm(new CardEntryType(), $TCardEntry);
if($request->isMethod('POST'))
{
$form->bind($request);
if($form->isValid())
{
die('form valid');
}
}
return $this->render('DimRestaurantBundle:Administration/CardEntry:index.html.twig', array('form' => $form->createView()));
}
}
当我提交表单时,我总是遇到同样的错误:
给定“字符串”、“数组”类型的预期参数
我很困惑...你有什么想法吗??
非常感谢!
【问题讨论】:
-
private $cardEntryPrice;没有定义为集合(如ArrayCollection),而是定义为string。 -
感谢您的回复,但我不知道如何解决我的问题...
标签: validation symfony doctrine-orm