1つの列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";
}
がどのようにのような形でこれを生成するための は、私のようなデータを処理するため、新たな周波数の種類を作成するために、いくつかの提案を持っていますドロップダウンリストやこのようなことに対処する他の良い方法がありますか?
さらにもう1つの質問は、サブタイトルのように、ラベルだけをフォームに表示する方法はありますか?
ありがとうございました。
++++++++++++++++++++++++++++++++++++++++++++++頻度については
->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
)
)
を私が取得し、フォームデータを処理するための機能を設定して、以下の追加している:++++
現在、私は以下のようにフォームタイプを構築しています。
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で選択肢を管理する方法があるのだろうかと思います。私はフォームを構築するときに配列としてリストしたくありません。他のクラスからデータを取得できますか?
ありがとうございます。
...
->add('unit', EntityType::class, array(
'class' => 'AppBundle:Unit',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u');
},
'choice_label' => 'value',
))
...
あなたはまだ追加する必要があります。そうのようなフォームの使用EntityTypeで次に
<?php
// src/AppBundle/Entity/Unit.php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="unit")
*/
class Unit
{
/**
* @ORM\Id
* @ORM\Column(name="unit_id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $unit_id;
/**
* @ORM\Column(name="value", type="string")
*/
protected $value;
/**
* Set value
*
* @param string $val
*
* @return Unit
*/
public function setValue($val)
{
$this->value = $val;
return $this;
}
/**
* Get value
*
* @return string
*/
public function getValue()
{
return $this->value;
}
}
:
あなたは、[Symfony Forms documentation](https://symfony.com/doc/current/forms.html)と{Doctrine Documentation(https://symfony.com/doc) /current/doctrine.html)?もしそうなら、フォームクラスを作ろうとしましたか? –
ありがとう。私は今やっているやり方をリストアップしています。しかし、まだいくつかの質問があります。 – Bob
こんにちはボブ。 Stackoverflowに関するコメントをアップヴォートすることを確認してください。私は人々が同じ問題を抱えている場合に役立つ提案を特定するのを助けます。 frequencyUnitに関する質問に答えることができるかどうかがわかります。 –