【发布时间】:2017-07-21 17:16:32
【问题描述】:
我将创建一个包含一列 ID 验证的表单。 有几个基于系统的选项,和 Enum 一样。
目标页面应该是:
这里我在 Entity 中的属性为:
/**
* @var array<string>
*
* @ORM\Column(name="id_verification_requirements", type="simple_array", nullable=true)
*/
private $idVerificationRequirements;
我不确定如何构建表单元素并存储相关数据。 我需要将数据库中的特定数据保存为常量表吗? 好像 PHP 不支持 Enum。
同时,我还必须处理表单中的频率类型。 我有一些建议来创建一个新的频率类型来处理数据,例如:
频率:
class Frequency{
private $count;
// $unit must be defined in FrequencyUnit
private $unit;
function __construct($c, $u)
{
$this->count = $c;
$this->unit = $u;
}}
然后是频率单位:
abstract class FrequencyUnit
{
const PER_DAY = "PER DAY";
const PER_WEEK = "PER WEEK";
const PER_MONTH = "PER_MONTH";
const PER_YEAR = "PER_YEAR";
}
如何以下拉列表之类的形式生成它或者有其他更好的方法来处理这种事情?
还有一个问题是,有没有办法在表单中只显示一个标签,就像副标题一样?
非常感谢您的帮助。
++++++++++++++++++++++++++++++++++++++++++++++++++ +++
目前我已经构建了如下表单类型:
->add('frequencyCount', IntegerType::class,array('label' => 'Max Load Frequency'))
->add('frequencyUnit', ChoiceType::class,array(
'choices' => array(
'Per Day' => 'Per Day',
'Per Week' => 'Per Week',
'Per Month' => 'Per Month',
'Per Year' => 'Per Year'
),
'expanded' => false, 'multiple' => false
))
->add('idVerificationRequirements', ChoiceType::class, array(
'label' => 'ID Verification Requirements',
'choices' => array(
'Front' => 1,
'Back' => 2,
'Both' => 3
),
'expanded' => true, 'multiple' => true
)
)
对于频率,我在下面添加了 get 和 set 函数来处理表单数据。
public function setFrequencyCount($count)
{
$this->loadFreq->setCount($count);
return $this;
}
public function getFrequencyCount()
{
return $this->loadFreq->getCount();
}
public function setFrequencyUnit($unit)
{
$this->loadFreq->setUnit($unit);
return $this;
}
public function getFrequencyUnit()
{
return $this->loadFreq->getUnit();
}
似乎可行。 我不确定这应该是解决方案还是更好的方法。
现在,我只是想知道是否有某种方法可以使用 ChoiceType 来管理选择。我不想在构建表单时列为数组。我可以从其他类获取数据吗?
非常感谢。
【问题讨论】:
-
我们是否应该假设您已经通过了Symfony Forms documentation 以及{Doctrine Documentation](symfony.com/doc/current/doctrine.html)?如果是这样,您是否尝试过制作表单类?
-
非常感谢。我已经列出了我现在正在做的事情。但仍有一些问题。
-
你好,鲍勃。确保你对 Stackoverflow 上的任何 cmets 都投了赞成票。我帮助人们找出有用的建议,以防他们遇到同样的问题。我看看能不能回答你关于频率单位的问题。
标签: symfony symfony-forms