-2
我是symfony上的newby。 我正在使用symfony 2.7.6開發一個項目。 我有一個對象/實體「Trajet」,其中包含2個屬性(這是我的頭痛源!)。 這兩個屬性是VilleDepart和VilleArrivee(整數鏈接到我的數據庫的教條(對象類中的ORM註釋)) 在我的表單中,我希望它們顯示爲下拉列表。所以我用了兩個實體字段類型的formbuilder。當我試圖堅持控制器中的「Trajet」對象(使用實體管理器),我得到這個sql錯誤(因爲它認爲兩個屬性VilleDepart和VilleArrivee作爲實體而不是整數)... 我清楚地看到問題是...的SQL查詢如何堅持包含作爲選擇列表的表單中顯示的屬性的實體
INSERT INTO trajet (traj_villedepart , traj_villearrivee) VALUES ({}, {})
而不是
INSERT INTO trajet (traj_villedepart , traj_villearrivee) VALUES (1, 2)
例如
這裏他班裏TRAJET
class Trajet {
/**
* @ORM\Id @ORM\Column(name="idtrajet", type="integer")
* @ORM\GeneratedValue
*/
private $ID;
/**
* @ORM\Column(name="traj_idvilledepart", type="integer")
*/
private $VilleDepart;
/**
* @ORM\Column(name="traj_idvillearrivee", type="integer")
*/
private $VilleArrivee;
//Getters and setters....
}
這裏是我的形式
class TrajetType extends AbstractType
{
private $manager;
public function __construct(ObjectManager $manager)
{
$this->manager = $manager;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('DescriptionVoiture', 'textarea')
->add('VilleDepart', 'entity', array(
'class' => 'MyBundle:Ville',
'property' => 'Nom',
'em' => 'pgsql',
'query_builder' => function(VilleRepository $er){
return $er->getVillesOrderByOrdre();
},
))
->add('VilleArrivee', 'entity', array(
'class' => 'MyBundle:Ville',
'property' => 'Nom',
'em' => 'pgsql',
'query_builder' => function(VilleRepository $er){
return $er->getVillesOrderByOrdre();
},
))
}
public function getName()
{
return 'trajet';
}
}
最後我控制器
class TrajetController extends Controller {
public function AddEditTrajetAction($idTrajet = null) {
$manager = $this->getDoctrine()->getManager('pgsql');
$trajet = new Trajet();
//Initialize the object $trajet with the get ID....
$form = $this->createForm(new TrajetType($manager), $trajet);
$request = $this->getRequest();
if ($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isValid()) {
$manager->persist($trajet);
$manager->flush();
//Return to the view...
}
}
}
}
請幫抽象類型TRAJET的!我變得瘋狂!感謝
代碼的一部分是可觀的。 – scoolnico
你能從你的實體類中定義「Trajet」的代碼嗎?根據你的班級長相如何,可能有幾種方法可以解決你的問題。我猜你的房產VilleDepart和VilleArrivee都是實體,對嗎? – Fuzzzzel
它聽起來像你可能需要一個數據轉換器來轉換整數和實體。 http://symfony.com/doc/current/cookbook/form/data_transformers.html但像以前的評論員一樣,我不清楚到底發生了什麼。 – Cerad