我有我使用的一種形式,數據庫類產品 - 它與這個或類似的3個日期字段:一種形式,它從來都不是有效的 - Symfony2的
/**
* @ORM\Column(name="`date`", type="date")
* @Assert\NotBlank()
* @Assert\Type("\Date")
*/
它也3-4其他只有NotBlank()
的字段,一個沒有任何約束,一個字段用於保存產品的類別(類別是數據庫中的另一個類和表)。它看起來像這樣:
/**
* @ORM\ManyToOne(targetEntity="Categories")
* @ORM\JoinColumn(name="categories_id", referencedColumnName="id")
**/
private $categories;
這裏是我的功能:
public function addAction($id, Request $request)
{
$em = $this->getDoctrine()->getEntityManager();
$products = new Products();
$products_form = $this->createForm(new ProductsType(), $products);
$category = $em->getRepository('AcmeMyBundle:Categories')->find($id);
if($request->getMethod() == 'POST')
{
$products_form->bindRequest($request);
if($products_form->isValid())
{
$products->setDomains($category);
$em->persist($products);
$em->flush();
}
在它重定向結束。問題是,即使我在表單中添加了正確的值,它說它是無效的。要添加日期,只需在表單中寫入如此'2012-08-09'的字符串即可。
當我評論
if($products_form->isValid())
,一切工作正常。
有什麼建議嗎?請幫忙!
編輯:
下面是產品類:
/**
* @ORM\Entity
* @ORM\Table(name="products")
*/
class Products
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Categories")
* @ORM\JoinColumn(name="categories_id", referencedColumnName="id")
**/
private $categories;
/**
* @ORM\Column(name="`date`", type="date")
* @Assert\NotBlank()
* @Assert\Type("\Date")
*/
protected $date;
/**
* @ORM\Column(name="`from`", type="date")
* @Assert\NotBlank()
* @Assert\Type("\Date")
*/
protected $from;
/**
* @ORM\Column(name="`to`", type="date")
* @Assert\NotBlank()
* @Assert\Type("\Date")
*/
protected $to;
/**
* @ORM\Column(type="decimal", scale=2)
* @Assert\NotBlank()
*/
protected $price;
/**
* @ORM\Column(type="string", length=5)
* @Assert\NotBlank()
*/
protected $currency;
/**
* @ORM\Column(type="string", length=50)
* @Assert\NotBlank()
*/
protected $paymentid;
/**
* @ORM\Column(type="string", length=100, nullable=true)
*/
protected $notes;
在這裏,我創建的形式:
class ProductsType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('date', 'date', array(
'widget' => 'single_text',
'format' => 'yyyy-MM-dd'));
$builder->add('from', 'date', array(
'widget' => 'single_text',
'format' => 'yyyy-MM-dd'));
$builder->add('to', 'date', array(
'widget' => 'single_text',
'format' => 'yyyy-MM-dd'));
$builder->add('price', 'text');
$builder->add('currency', 'choice', array(
'choices' => array(
'empty_value'=>'--- Choose ---', 'USD'=>'USD', 'HKD'=>'HKD', 'EUR'=>'EUR', 'BGN'=>'BGN')));
$builder->add('paymentid', 'text');
$builder->add('notes', 'text', array(
'required' => false));
}
public function getName()
{
return 'payments';
}
發佈表單類。 – gremo 2012-08-09 08:28:32
我發佈了產品類和我創建表格的類:) – Faery 2012-08-09 08:35:29
好吧,我會編輯我的答案然後:) – gremo 2012-08-09 08:38:11