2015-08-25 46 views
1

我尝试通过Sonata Admin Bundle编辑或添加产品,但验证程序始终拒绝“条件”字段,因为“您选择的值不是有效的选择。”Sonata管理包选择验证错误

管理类

protected function configureFormFields(FormMapper $formMapper) 
{ 
     $formMapper 
     ->add('name', 'text', array('label' => 'Nazwa')) 
     ->add('condition', 'choice', array(
       'choices' => Product::getConditions(), 
       'label' => 'Stan', 
     )); 
} 

实体

/** 
* @Assert\Choice(callback = "getConditions") 
* @ORM\Column(type="string", length=10) 
*/ 
protected $condition; 

public static function getConditions() 
{ 
    return array('new', 'used'); 
} 
+0

编辑:* @ORM \ Column(name =“product_condition”,type =“string”,length = 10) – piotr712

+0

最后编辑不解决主要问题。 – piotr712

回答

1

试试这个:

// ..

->add('condition', 'entity', array(
       'class' => YourAppBundle:YourEntityProduct 
       'label' => 'Stan', 
    )); 

..//

+0

我很抱歉,但这使列出所有产品,而不仅仅是它的条件。我使用'choices_as_values'=> true,这是工作,但打算像“新”或“已使用”的文本我有数字0或1来选择。 – piotr712

1

学说期望获得字符串,但将整数作为所选字段的值传递给它。
这就是你通过什么:

return array(
    0 => 'new', 
    1 => 'used' 
); 

这就是你需要的东西(例如):

return array(
    '0' => 'new', 
    '1' => 'used' 
); 

错误是由于字段长度的验证触发。

+0

我很抱歉,但这不起作用。什么也没有变。我试图改变'条件'类型为整数,并在那之后你的数组。也许这是Symfony 2.7中的Sonata Admin的错误?任何人都可以检查,因为我是Symfony新手。现在我使用\t'返回阵列( \t \t '新'=> '新', \t \t '使用'=> '使用' \t \t);'和' 'choices_as_values'=> TRUE'但这不是一个好的解决方案 – piotr712

0

索纳塔使用值作为标签来显示和键值(传递给模型)。为了得到你想要的数组,应该像array('new'=>'new','used'=>'used');