ComboBox(html selectタグ)のデフォルト値を選択しようとして問題があります。Symfony2 FormBuilderを使用しています。ここに私のコードです:私は、私は州のフィールドで、デフォルトの州を使用NewsletterType.phpformbuilderを使用してコンボボックスのデフォルト値を選択
$n = new Foo();
$em = $this->getDoctrine()->getEntityManager();
$province = $em->getRepository('MyEntityBundle:SYS_TProvince')->find('ES-M');
$form = $this->createForm(new NewsletterType($province), $n);
$request = $this->getRequest();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
if ($form->isValid()) {
// some action
}
}
を選択するデフォルトの州番目のフォームに送信
MyController.php
class NewsletterType extends AbstractType
{
private $province;
function __construct($province)
{
$this->province = $province;
}
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('idnewsletter', 'hidden');
$builder->add('email', 'email');
$builder->add('type', 'entity',
array('label' => 'type',
'class' => 'MeediamSplashBundle:USR_TType',
'property' => 'description',
'preferred_choices' => array(3,5,7)
));
$builder->add('province', 'entity',
array('label' => 'province',
'class' => 'MeediamSplashBundle:SYS_TProvince',
'property' => 'name',
'data' => $this->province
));
$builder->add('postalcode');
$builder->add('status', 'hidden');
$builder->add('created', 'hidden');
}
public function getName()
{
return 'newsletter';
}
}
SYS_TProvince.phpエンティティ
<?php
namespace SciOf\Meediam\SplashBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="SYS_TProvince")
*/
class SYS_TProvince
{
/**
* @ORM\Id
* @ORM\Column(type="string", length=5, nullable=false)
*/
protected $idprovince;
/**
* @ORM\Column(type="string", length=3, nullable=false)
* @Assert\NotBlank()
*/
protected $idcountry;
/**
* @ORM\Column(type="string", length=60, nullable=false)
* @Assert\NotBlank()
*/
protected $name;
public function getIdprovince() { return $this->idprovince; }
public function getIdcountry() { return $this->idcountry; }
public function getName() { return $this->name; }
public function setIdprovince($idprovince) { $this->idprovince = $idprovince; }
public function setIdcountry($idcountry) { $this->idcountry = $idcountry; }
public function setName($name) { $this->name = $name; }
public function __toString() { return $this->idprovince; }
}
明らかにあらゆることがOKですが動作しません。 "preferred_choices"を使用すると動作しますが、 "data"でデフォルト値を選択することはできません。
オブジェクトがクラスに含まれている場合、 - > getIdProvice()を使用すると、オブジェクトのPKが取得され、文字列であるためエラーが発生します。
私はいくつかの情報を読んで、私は何をするかわからない:
How to set default value for form field in Symfony2? http://symfony.com/doc/current/reference/forms/types/field.html
誰かが何らかのエラーが表示していますか?
私は実体を掲載しました。どこでこのコードを追加する必要がありますか?コントローラ? FormBuilder? – unairoldan
oups遅くなりました。あなたの '$ form = $ this-> createForm(new NewsletterType($ province)、$ n);'の前にこれを追加しておきましょう。あなたの都道府県を設定する(または2つのエンティティ間に関係がある場合は複数の値を設定します)。 – Snroki
それは動作します。ありがとう....しかし、好奇心から、私はエンティティクラスなしのフォームを使用している場合? – unairoldan