2016-07-27 4 views
0

私はカスタムビューを持っていますので、編集することができます。これらの中には、レンダリングメソッドを介して送信された、コントローラ内で行った学校をフィルタリングするクエリの結果であるマルチセレクトがあります。フォームを送信するときに__toString()が文字列値を返す必要があります

これまで、多対多の複数選択フォームを使用して、データベースに保存されたすべての学校を選択していました。今私はそれを使用したいので、すでに働いているものを使うことができます。

フォームではなくレンダリングを経由して送信されるため、HTMLフォームを作成して表示し、フォームを送信するときに選択された内容を確認することができましたが、いくつかの問題がありました:

まず、オブジェクトのインスタンスであり、配列ではなくオブジェクトを保存できるようにしたかったのです。私は、以下を実行していることを行うために管理:

 $object = new Ecole(); 
     foreach ($ecolesDispo as $key => $value) 
     { 
      $object->$key = $value; 
     } 
     $mission->addEcolesDispo($object); 

(エコールは学校のためである)

右のそれの後に来たと今ではそれが文字列に変換したいので、私は今、こだわっ問題しかし、私はそうすることはできません。

私のエンティティの関係する部分は次のようになります。

/** 
* Constructor 
*/ 
public function __construct() 
{ 
    $this->ecolesDispo = new \Doctrine\Common\Collections\ArrayCollection(); 
} 

/** 
* @return string 
*/ 
public function __toString() 
{ 
    return (string) $this->addEcolesDispo($object); 
//Not sure about that part though 
} 

/** 
* Add ecolesDispo 
* 
* @param \EcoleBundle\Entity\Ecole $ecolesDispo 
* 
* @return Mission 
*/ 
public function addEcolesDispo(\EcoleBundle\Entity\Ecole $ecolesDispo) 
{ 
    $this->ecolesDispo[] = $ecolesDispo; 

    return $this; 
} 

/** 
* Remove ecolesDispo 
* 
* @param \EcoleBundle\Entity\Ecole $ecolesDispo 
*/ 
public function removeEcolesDispo(\EcoleBundle\Entity\Ecole $ecolesDispo) 
{ 
    $this->ecolesDispo->removeElement($ecolesDispo); 
} 

/** 
* Get ecolesDispo 
* 
* @return \Doctrine\Common\Collections\Collection 
*/ 
public function getEcolesDispo() 
{ 
    return $this->ecolesDispo; 
} 

これを文字列に変換するにはどうすればよいですか? >文字列プロパティに依存している -

public function __toString() 
{ 
    return $this->id; // Because __toString seems to be called to set your $key variable... 
} 

はすべきでは次のようになり、事前に

+0

それはどのエンティティですか、それはMission Entityですか?また、エコールエンティティコードを表示できますか? '__toString()'関数で正確に表示したいものは何ですか? –

答えて

0

あなた__toString機能をいただき、ありがとうございます。

__toString()関数では、(string)を使用します。__toString()を暗黙的に呼び出して$thisを文字列に変換します。それは循環呼び出しです。

0

__toStringを使用していたエンティティに文字列変数の名前がの場合、またはエンティティ自体を指定するエンティティの文字列型プロパティを使用する場合は、これを試してください。

public function __toString() 
{ 
    // Or change the property that you want to show 
    return $this->name; 
} 
関連する問題