2017-07-17 24 views
1

私のコントローラでは、私のtwigビューにいくつかのユーザーを渡すだけです。ここ は私の関数である。文字列変数の属性にアクセスすることができません

public function viewAction($id) 
    { 
     $em = $this->getDoctrine()->getManager(); 
     $planningRepo = $em->getRepository('SimonPediBundle:Planning'); 
     $userRepo = $em->getRepository('SimonUserBundle:User'); 

     $user = $this->getUser(); 
     $planningId = $user->getPlanning()->getId(); 
     $planning = $planningRepo->find($planningId); 


     $users = $userRepo->findByPlanning($planningId); 

     if (null === $planning) { 
      throw new NotFoundHttpException("Le planning d'id ".$id. "n'existe pas."); 
     } 

     return $this->render('planningAction/planning.html.twig', array('planning' => $planning, 
                     'users' => $users,)); 
    } 

そして、これは私がHTMLのテーブルの上にいくつかの情報を表示したい私の小枝図である:

<tbody> 
        <tr> 
        <th scope="row">Responsable</th> 
        {% for i in 1..5 %} 
         {% set assigned_user = ' ' %} 
         {% for user in users if user.planningday == i%} 
          {% set assigned_user = user %} 
         {% endfor %} 
         <td>{{assigned_user.name}} {{assigned_user.lastname}}</td> 
         {% endfor %} 
        </tr> 
        <tr> 
         <th scope="row">Description</th> 
         {% for i in 1..5 %} 
         {% set assigned_user = ' ' %} 
         {% for user in users if user.planningday == i%} 
          {% set assigned_user = user %} 
         {% endfor %} 
         <td>{{assigned_user.planningcontent}}</td> 
         {% endfor %} 
        </tr> 
       </tbody> 

、私はこのエラーを得た: インポッシブル属性にアクセスします( "")の文字列変数( "name")を返します。このラインの :助けを

<td>{{assigned_user.name}} {{assigned_user.lastname}}</td> 

ありがとう!

そして、ここでは、あなたが "assigned_user" へ "" の値を設定し、このライン

{% set assigned_user = ' ' %} 

持つエンティティ

/** 
* User 
* 
* @ORM\Table(name="user") 
* @ORM\Entity(repositoryClass="Simon\UserBundle\Repository\UserRepository") 
*/ 
class User extends BaseUser 
{ 
    /** 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 
    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=255) 
    * @Assert\NotBlank(message="Merci d'entrer votre prénom.", groups={"Registration", "Profile"}) 
    * @Assert\Length(
    *  min=3, 
    *  max=50, 
    *  minMessage="Prénom trop court", 
    *  maxMessage="Prénom trop long", 
    *  groups={"Registration", "Profile"} 
    *) 
    */ 
    protected $name; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="lastname", type="string", length=255) 
    * @Assert\NotBlank(message="Merci d'entrer votre nom.", groups={"Registration", "Profile"}) 
    * @Assert\Length(
    *  min=3, 
    *  max=50, 
    *  minMessage="Nom trop court", 
    *  maxMessage="Nom trop long", 
    *  groups={"Registration", "Profile"} 
    *) 
    */ 
    protected $lastname; 
    /** 
    * @var string 
    * 
    * @ORM\Column(name="phone", type="string", length=12) 
    * @Assert\NotBlank(message="Merci d'entrer un numéro de téléphone.", groups={"Registration", "Profile"})) 
    * @Assert\Length(
    *  min=10, 
    *  max=10, 
    *  minMessage="Entrez un numéro de téléphone valide", 
    *  maxMessage="Entrez un numéro de téléphone valide", 
    *  groups={"Registration", "Profile"} 
    *) 
    */ 
    protected $phone; 
    /** 
    * @var boolean 
    * 
    *@ORM\Column(name="hasAdvert", type="boolean", nullable=true) 
    */ 
    protected $hasAdvert; 
    /** 
    * @var boolean 
    * 
    * @ORM\Column(name="isAdmin", type="boolean", nullable=true) 
    */ 
    protected $isAdmin; 
    /** 
    * 
    * @ORM\ManyToOne(targetEntity="Simon\PediBundle\Entity\Planning", cascade={"persist"}) 
    * 
    */ 
    protected $planning; 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="planningday", type="smallint", nullable= true) 
    */ 
    protected $planningday; 
    /** 
    * @var text 
    * 
    * @ORM\Column(name="planningcontent", type="text", nullable= true) 
    */ 
    protected $planningcontent; 
    /** 
    *@ var string 
    * @ORM\Column(name="address", type="string", length=255) 
    */ 
    protected $address; 

    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set name 
    * 
    * @param string $name 
    * 
    * @return User 
    */ 
    public function setName($name) 
    { 
     $this->name = $name; 

     return $this; 
    } 

    /** 
    * Get name 
    * 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 

    /** 
    * Set lastname 
    * 
    * @param string $lastname 
    * 
    * @return User 
    */ 
    public function setLastname($lastname) 
    { 
     $this->lastname = $lastname; 

     return $this; 
    } 

    /** 
    * Get lastname 
    * 
    * @return string 
    */ 
    public function getLastname() 
    { 
     return $this->lastname; 
    } 

    /** 
    * Set phone 
    * 
    * @param string $phone 
    * 
    * @return User 
    */ 
    public function setPhone($phone) 
    { 
     $this->phone = $phone; 

     return $this; 
    } 

    /** 
    * Get phone 
    * 
    * @return string 
    */ 
    public function getPhone() 
    { 
     return $this->phone; 
    } 

    /** 
    * Set hasAdvert 
    * 
    * @param boolean $hasAdvert 
    * 
    * @return User 
    */ 
    public function setHasAdvert($hasAdvert) 
    { 
     $this->hasAdvert = $hasAdvert; 

     return $this; 
    } 

    /** 
    * Get hasAdvert 
    * 
    * @return boolean 
    */ 
    public function getHasAdvert() 
    { 
     return $this->hasAdvert; 
    } 

    /** 
    * Set isAdmin 
    * 
    * @param boolean $isAdmin 
    * 
    * @return User 
    */ 
    public function setIsAdmin($isAdmin) 
    { 
     $this->isAdmin = $isAdmin; 

     return $this; 
    } 

    /** 
    * Get isAdmin 
    * 
    * @return boolean 
    */ 
    public function getIsAdmin() 
    { 
     return $this->isAdmin; 
    } 

    /** 
    * Set planningday 
    * 
    * @param integer $planningday 
    * 
    * @return User 
    */ 
    public function setPlanningday($planningday) 
    { 
     $this->planningday = $planningday; 

     return $this; 
    } 

    /** 
    * Get planningday 
    * 
    * @return integer 
    */ 
    public function getPlanningday() 
    { 
     return $this->planningday; 
    } 

    /** 
    * Set planningcontent 
    * 
    * @param string $planningcontent 
    * 
    * @return User 
    */ 
    public function setPlanningcontent($planningcontent) 
    { 
     $this->planningcontent = $planningcontent; 

     return $this; 
    } 

    /** 
    * Get planningcontent 
    * 
    * @return string 
    */ 
    public function getPlanningcontent() 
    { 
     return $this->planningcontent; 
    } 

    /** 
    * Set address 
    * 
    * @param string $address 
    * 
    * @return User 
    */ 
    public function setAddress($address) 
    { 
     $this->address = $address; 

     return $this; 
    } 

    /** 
    * Get address 
    * 
    * @return string 
    */ 
    public function getAddress() 
    { 
     return $this->address; 
    } 

    /** 
    * Set planning 
    * 
    * @param \Simon\PediBundle\Entity\Planning $planning 
    * 
    * @return User 
    */ 
    public function setPlanning(\Simon\PediBundle\Entity\Planning $planning = null) 
    { 
     $this->planning = $planning; 

     return $this; 
    } 

    /** 
    * Get planning 
    * 
    * @return \Simon\PediBundle\Entity\Planning 
    */ 
    public function getPlanning() 
    { 
     return $this->planning; 
    } 
} 
+0

ループはあまり意味がありません。なぜ '​​'はあなたの 'forループ'とそのユーザの表示をループ内で囲んでいないのですか? –

答えて

1

オブジェクトを使用している場合は、デフォルト値をstringに設定する必要はありません。 nullに設定して、ユーザーが見つかったかどうかを確認してください。

<tbody> 
    <tr> 
    <th scope="row">Responsable</th> 
    {% for i in 1..5 %} 
     {% set assigned_user = null %} 
     {% for user in users if user.planningday == i%} 
      {% set assigned_user = user %} 
     {% endfor %} 
     <td> 
     {% if not assigned_user is null %} 
      {{assigned_user.name}} {{assigned_user.lastname}} 
     {% endif %} 
     </td> 
     {% endfor %} 
    </tr> 
    <tr> 
     <th scope="row">Description</th> 
     {% for i in 1..5 %} 
     {% set assigned_user = null %} 
     {% for user in users if user.planningday == i%} 
      {% set assigned_user = user %} 
     {% endfor %} 
     <td> 
     {% if not assigned_user is null %} 
      {{assigned_user.planningcontent }} 
     {% endif %}  
     </td> 
     {% endfor %} 
    </tr> 
</tbody> 
+0

これは完璧に動作しています! – Simon

0

私のユーザーです。あなたはこの条件に合致するユーザーを持っていない場合は

{% for user in users if user.planningday == i%} 

値は、文字列の代わりに、オブジェクトのままになります。

+0

しかし、私は条件に一致するユーザーを持っています、そして、それは同じ小枝ループで私の最後のプロジェクトで動作するために使用されています。なぜここではうまくいかないのか分かりません – Simon

+0

$ users変数の内容は何ですか? –

関連する問題