我要創建一個帶有一列ID驗證的表單。 有幾個基於系統的選項,與Enum相同。如何使用Symfony格式處理ChoiceType的常用數據?
目標頁面應該是:
這裏我作爲實體的屬性:
/**
* @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;
}}
然後FrequencyUnit:
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文檔](https://symfony.com/doc/current/forms.html)和{Doctrine Documentation](https://symfony.com/doc) /current/doctrine.html)?如果是這樣,你有沒有嘗試過製作表格課程? –
非常感謝。我現在列出了我正在做的事情。但仍然有一些問題。 – Bob
你好鮑勃。確保你贊成Stackoverflow上的任何評論。如果他們遇到同樣的問題,我會幫助人們找出有用的建議。我會看看我能否回答你關於frequencyUnit的問題。 –