Php EntityType字段中1:N原则关系的选定空值
我遇到了一些与风险有关的事件 我正在使用Symfony 2.6和ORM实体,其中包含以下符号实体:Php EntityType字段中1:N原则关系的选定空值,php,symfony,doctrine-orm,doctrine,symfony-forms,Php,Symfony,Doctrine Orm,Doctrine,Symfony Forms,我遇到了一些与风险有关的事件 我正在使用Symfony 2.6和ORM实体,其中包含以下符号实体: class Incident { private $id; private $name; private $date; /** * @ORM\ManyToOne(targetEntity="Risk") * @ORM\JoinColumn(name="risk_id") */ private $risk; } class Ri
class Incident
{
private $id;
private $name;
private $date;
/**
* @ORM\ManyToOne(targetEntity="Risk")
* @ORM\JoinColumn(name="risk_id")
*/
private $risk;
}
class Risk
{
private $id;
private $level;
private $name;
}
风险
-表包含如下数据:
id level name
1 0 none
2 2 low
3 1 very low
4 5 moderate
5 10 high
对于事件,我得到了如下表单类型:
class IncidentType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
[...]
->add('risk', 'entity', [
'class' => 'Model:Risk',
'property' => 'name',
'empty_data' => null,
'empty_value' => 'not assessed',
'expanded' => true,
'required' => [true|false](see below),
])
[...]
}
因此,我的事故风险可以“不评估”。也就是说,没有风险集(null
)。为了保持模型的整洁,我不想让一行的级别为-1,名称为“未评估”
我的表单按预期工作,缺少一个小细节:当风险为null
时,我的单选按钮列表没有选择值。无论'required'
-选项的值如何,都会发生这种情况
对于空值,我得到:
( ) not assessed
( ) none
( ) very low
[...]
我想:
(x) not assessed
( ) none
( ) very low
[...]
我想对于(未扩展的)下拉字段来说,这种行为很好
当数据值为null
时,是否有办法选择我的单选按钮的'placeholder'
/'empty\u value'
-选项?对于您的风险
字段,您应该执行以下操作:
class IncidentType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
[...]
->add('risk', 'entity', [
'class' => 'Model:Risk',
'property' => 'name',
'empty_data' => null,
'empty_value' => 'not assessed',
'expanded' => true,
'required' => true
])
[...]
}
}
我刚刚检查了它,当risk
为空并且使用上述代码时,第一个值被选中。注:我为您的风险
字段添加了'empty\u data'=>null,
并删除了占位符,您应该执行以下操作:
class IncidentType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
[...]
->add('risk', 'entity', [
'class' => 'Model:Risk',
'property' => 'name',
'empty_data' => null,
'empty_value' => 'not assessed',
'expanded' => true,
'required' => true
])
[...]
}
}
我刚刚检查了它,当risk
为空并且使用上述代码时,第一个值被选中。注:我添加了'empty\u data'=>null,
并删除了占位符
,该占位符有效,但不是一个好的解决方案。。。如果您的第一个值是动态的,会发生什么情况?这很有效,但不是一个好的解决方案。。。如果您的第一个值是动态的,会发生什么情况?您是否尝试过执行“空数据”=>null、“空值”=>“未评估”
?实际上,'empty\u value'=>“not assessment”
应该是一个技巧,你不需要占位符。我想知道我怎么会错过这个。然而,呈现的标记没有区别。“未评估”仍未选择。我更正了我的问题,删除了原型。如何在模板中呈现它?我正在使用{{form_row(form.risk)}}
进行渲染。我可以使用新的Symfony 2.7.10设置确认它是否正常工作。谢谢你的帮助,@takeit。将您的评论改写为简短的回答,我很乐意接受。您是否尝试过使用“空数据”=>null、“空值”=>“未评估”,
?实际上,'empty\u value'=>“not assessment”
应该是一个技巧,你不需要占位符。我想知道我怎么会错过这个。然而,呈现的标记没有区别。“未评估”仍未选择。我更正了我的问题,删除了原型。如何在模板中呈现它?我正在使用{{form_row(form.risk)}}
进行渲染。我可以使用新的Symfony 2.7.10设置确认它是否正常工作。谢谢你的帮助,@takeit。将您的评论改写为简短的回答,我将欣然接受。我的最终发现:它在Symfony 2.7.10中的工作与预期一致;它在Symfony 2.7.4中不起作用。您可以查看更改日志:并准确比较已更改的内容。也许它会给你一个提示。我猜相关的更改是在2.7.10或2.7.8中引入的。我看到它得到了照顾,并将升级。再次感谢您的帮助。我的最终发现:它在Symfony 2.7.10中的工作与预期一致;它在Symfony 2.7.4中不起作用。您可以查看更改日志:并准确比较已更改的内容。也许它会给你一个提示。我猜相关的更改是在2.7.10或2.7.8中引入的。我看到它得到了照顾,并将升级。再次感谢您的帮助。这与其说是回答,不如说是评论。我知道你没有足够的代表,但这是规则…这是一个评论,而不是一个答案。我知道你没有足够的代表权,但这是规则。。。