私はこのフォームを持っています:
class CampaignType extends AbstractType {
protected $pricings;
public function __construct(array $pricings){
$this->pricings = $pricings;
}
public function buildForm(FormBuilderInterface $builder, array $options){
$builder
->setMethod('POST')
->add('name', 'text')
->add('code', 'text')
->add('pricings', 'choice', array(
'choices' => $this->pricings,
'expanded' => false,
'multiple' => true
))
->add('save', 'submit');
}
}
$ priceingは、フォームに渡されるキー値配列です。
array(2) {
[2335331]=> string(38) "1 Months - 1 Issues - 34 - Credit card"
[2335332]=> string(40) "12 Months - 12 Issues - 23 - Credit card"
[2335333]=> string(40) "24 Months - 12 Issues - 23 - Credit card"
}
レコードを編集する必要がある場合は、$ defaultDataをフォームに渡します。
array(10) {
["id"]=> string(1) "4"
["subsite_id"]=> string(3) "104"
["name"]=> string(5) "ffsgd"
["code"]=> string(6) "dfgfdg"
["pricings"]=>
array(2) {
[2335331]=> string(38) "1 Months - 1 Issues - 34 - Credit card"
[2335332]=> string(40) "12 Months - 12 Issues - 23 - Credit card" } }
ただし、複数選択では、渡されたオプションが選択されたとおりに取得されません。
データベースからフェッチされたキー値配列に応じて、複数選択ウィジェットのいくつかのオプションを選択済みとしてマークする方法はありますか?Doctrineを使用せずに
用としてのビジョンの提案、「データ」オプションは、単に選択された値の単純な配列で、使用する必要があり、私のようなないキー値の配列は思いました。
したがって、Form宣言は次のようになります。
class CampaignType extends AbstractType {
protected $pricings;
public function __construct(array $pricings, array $selectedPricings){
$this->pricings = $pricings;
$this->selectedPricings;
}
public function buildForm(FormBuilderInterface $builder, array $options){
$builder
->setMethod('POST')
->add('name', 'text')
->add('code', 'text')
->add('pricings', 'choice', array(
'choices' => $this->pricings,
'expanded' => false,
'multiple' => true,
'data' => $this->selectedPricing //array('2335331', '2335332')
))
->add('save', 'submit');
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加