在基本视图(树枝)+ symfony2 中使用数据库中的数据
Posted
技术标签:
【中文标题】在基本视图(树枝)+ symfony2 中使用数据库中的数据【英文标题】:Use data from database in base view (twig) + symfony2 【发布时间】:2014-01-20 10:59:18 【问题描述】:我在每个页面上都使用了一个基本视图。在我的基本观点中,我有:
<div class="container">
% block body %
% endblock %
</div>
每页正文的来源。在我的基本视图中,我还有一个导航。现在我想根据登录用户的一些数据显示一个按钮。
这是我的情况:
我有一个表 players
有一个 FK user_id
和一个 FK team_id
。 user_id
指的是我的user
表,其中保存了username, password, ...
。现在我想根据玩家表中的 team_id 显示按钮是否为 NULL。
所以我需要这样的东西:
if(is_null($user->getPlayer()->getTeam())
// DON'T SHOW BUTTON
else
// SHOW BUTTON
但是如何在基本视图中使用这些数据? (每页都呈现)
更新: 我的用户实体:
<?php
namespace VolleyScout\VolleyScoutBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
/**
* Users
*
* @ORM\Table(name="users", indexes=@ORM\Index(name="fk_users_roles1_idx", columns="role_id"))
* @ORM\Entity
*/
class Users implements AdvancedUserInterface
/**
* @var string
*
* @ORM\Column(name="username", type="string", length=45, nullable=false)
*/
private $username;
/**
* @var string
*
* @ORM\Column(name="password", type="string", length=60, nullable=false)
*/
private $password;
/**
* @var string
*
* @ORM\Column(name="salt", type="string", length=30, nullable=false)
*/
private $salt;
/**
* @var string
*
* @ORM\Column(name="user_firstname", type="string", length=45, nullable=false)
*/
private $userFirstname;
/**
* @var string
*
* @ORM\Column(name="user_surname", type="string", length=255, nullable=false)
*/
private $userSurname;
/**
* @var string
*
* @ORM\Column(name="user_email", type="string", length=255, nullable=false)
*/
private $userEmail;
/**
* @var string
*
* @ORM\Column(name="user_type", type="string", nullable=false)
*/
private $userType;
/**
* @var string
*
* @ORM\Column(name="user_token", type="string", length=45, nullable=true)
*/
private $userToken;
/**
* @var \DateTime
*
* @ORM\Column(name="user_created", type="datetime", nullable=false)
*/
private $userCreated;
/**
* @var \DateTime
*
* @ORM\Column(name="user_modified", type="datetime", nullable=true)
*/
private $userModified;
/**
* @var \DateTime
*
* @ORM\Column(name="user_deleted", type="datetime", nullable=true)
*/
private $userDeleted;
/**
* @var \DateTime
*
* @ORM\Column(name="user_lastlogin", type="datetime", nullable=true)
*/
private $userLastlogin;
/**
* @var \DateTime
*
* @ORM\Column(name="user_confirmed", type="datetime", nullable=true)
*/
private $userConfirmed;
/**
* @var \DateTime
*
* @ORM\Column(name="user_locked", type="datetime", nullable=true)
*/
private $userLocked;
/**
* @var integer
*
* @ORM\Column(name="user_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $userId;
/**
* @var \VolleyScout\VolleyScoutBundle\Entity\Roles
*
* @ORM\ManyToOne(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Roles")
* @ORM\JoinColumns(
* @ORM\JoinColumn(name="role_id", referencedColumnName="role_id")
* )
*/
protected $role;
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Teams", inversedBy="user")
* @ORM\JoinTable(name="user_follows_teams",
* joinColumns=
* @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
* ,
* inverseJoinColumns=
* @ORM\JoinColumn(name="team_id", referencedColumnName="team_id")
*
* )
*/
private $team;
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="VolleyScout\VolleyScoutBundle\Entity\Competitions", inversedBy="user")
* @ORM\JoinTable(name="user_follows_competitions",
* joinColumns=
* @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
* ,
* inverseJoinColumns=
* @ORM\JoinColumn(name="competition_id", referencedColumnName="competition_id")
*
* )
*/
private $competition;
private $plainPassword;
/**
* Constructor
*/
public function __construct()
$this->team = new \Doctrine\Common\Collections\ArrayCollection();
$this->competition = new \Doctrine\Common\Collections\ArrayCollection();
$this->salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);
/**
* Set username
*
* @param string $username
* @return Users
*/
public function setUsername($username)
$this->username = $username;
return $this;
/**
* Get username
*
* @return string
*/
public function getUsername()
return $this->username;
/**
* Set password
*
* @param string $password
* @return Users
*/
public function setPassword($password)
$this->password = $password;
return $this;
/**
* Get password
*
* @return string
*/
public function getPassword()
return $this->password;
/**
* Set salt
*
* @param string $salt
* @return Users
*/
public function setSalt($salt)
$this->salt = $salt;
return $this;
/**
* Get salt
*
* @return string
*/
public function getSalt()
return $this->salt;
/**
* Set userFirstname
*
* @param string $userFirstname
* @return Users
*/
public function setUserFirstname($userFirstname)
$this->userFirstname = $userFirstname;
return $this;
/**
* Get userFirstname
*
* @return string
*/
public function getUserFirstname()
return $this->userFirstname;
/**
* Set userSurname
*
* @param string $userSurname
* @return Users
*/
public function setUserSurname($userSurname)
$this->userSurname = $userSurname;
return $this;
/**
* Get userSurname
*
* @return string
*/
public function getUserSurname()
return $this->userSurname;
/**
* Set userEmail
*
* @param string $userEmail
* @return Users
*/
public function setUserEmail($userEmail)
$this->userEmail = $userEmail;
return $this;
/**
* Get userEmail
*
* @return string
*/
public function getUserEmail()
return $this->userEmail;
/**
* Set userType
*
* @param string $userType
* @return Users
*/
public function setUserType($userType)
$this->userType = $userType;
return $this;
/**
* Get userType
*
* @return string
*/
public function getUserType()
return $this->userType;
/**
* Set userToken
*
* @param string $userToken
* @return Users
*/
public function setUserToken($userToken)
$this->userToken = $userToken;
return $this;
/**
* Get userToken
*
* @return string
*/
public function getUserToken()
return $this->userToken;
/**
* Set userCreated
*
* @param \DateTime $userCreated
* @return Users
*/
public function setUserCreated($userCreated)
$this->userCreated = $userCreated;
return $this;
/**
* Get userCreated
*
* @return \DateTime
*/
public function getUserCreated()
return $this->userCreated;
/**
* Set userModified
*
* @param \DateTime $userModified
* @return Users
*/
public function setUserModified($userModified)
$this->userModified = $userModified;
return $this;
/**
* Get userModified
*
* @return \DateTime
*/
public function getUserModified()
return $this->userModified;
/**
* Set userDeleted
*
* @param \DateTime $userDeleted
* @return Users
*/
public function setUserDeleted($userDeleted)
$this->userDeleted = $userDeleted;
return $this;
/**
* Get userDeleted
*
* @return \DateTime
*/
public function getUserDeleted()
return $this->userDeleted;
/**
* Set userLastlogin
*
* @param \DateTime $userLastlogin
* @return Users
*/
public function setUserLastlogin($userLastlogin)
$this->userLastlogin = $userLastlogin;
return $this;
/**
* Get userLastlogin
*
* @return \DateTime
*/
public function getUserLastlogin()
return $this->userLastlogin;
/**
* Set userConfirmed
*
* @param \DateTime $userConfirmed
* @return Users
*/
public function setUserConfirmed($userConfirmed)
$this->userConfirmed = $userConfirmed;
return $this;
/**
* Get userConfirmed
*
* @return \DateTime
*/
public function getUserConfirmed()
return $this->userConfirmed;
/**
* Set userLocked
*
* @param \DateTime $userLocked
* @return Users
*/
public function setUserLocked($userLocked)
$this->userLocked = $userLocked;
return $this;
/**
* Get userLocked
*
* @return \DateTime
*/
public function getUserLocked()
return $this->userLocked;
/**
* Get userId
*
* @return integer
*/
public function getUserId()
return $this->userId;
/**
* Set role
*
* @param \VolleyScout\VolleyScoutBundle\Entity\Roles $role
* @return Users
*/
public function setRoles(\VolleyScout\VolleyScoutBundle\Entity\Roles $role = null)
$this->role = $role;
return $this;
/**
* Get role
*
* @return \VolleyScout\VolleyScoutBundle\Entity\Roles
*/
public function getRoles()
return array($this->role->getRoleName());
/**
* Add team
*
* @param \VolleyScout\VolleyScoutBundle\Entity\Teams $team
* @return Users
*/
public function addTeam(\VolleyScout\VolleyScoutBundle\Entity\Teams $team)
$this->team[] = $team;
return $this;
/**
* Remove team
*
* @param \VolleyScout\VolleyScoutBundle\Entity\Teams $team
*/
public function removeTeam(\VolleyScout\VolleyScoutBundle\Entity\Teams $team)
$this->team->removeElement($team);
/**
* Get team
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getTeam()
return $this->team;
/**
* Add competition
*
* @param \VolleyScout\VolleyScoutBundle\Entity\Competitions $competition
* @return Users
*/
public function addCompetition(\VolleyScout\VolleyScoutBundle\Entity\Competitions $competition)
$this->competition[] = $competition;
return $this;
/**
* Remove competition
*
* @param \VolleyScout\VolleyScoutBundle\Entity\Competitions $competition
*/
public function removeCompetition(\VolleyScout\VolleyScoutBundle\Entity\Competitions $competition)
$this->competition->removeElement($competition);
/**
* Get competition
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getCompetition()
return $this->competition;
//**********************************
// HAD TO IMPLEMENT THESE BY MESELF
//**********************************//
private $player;
/**
* Get player
*
* @return \VolleyScout\VolleyScoutBundle\Entity\Players
*/
public function getPlayer()
return $this->player;
/**
* Set player
*
* @param \VolleyScout\VolleyScoutBundle\Entity\Players $player
* @return Users
*/
public function setPlayer(\VolleyScout\VolleyScoutBundle\Entity\Players $player = null)
$this->player = $player;
return $this;
public function eraseCredentials()
$this->setPlainPassword(null);
public function getPlainPassword()
return $this->plainPassword;
public function setPlainPassword($plainPassword)
$this->plainPassword = $plainPassword;
/**
* Implementation of AdvancedUserInterface method
*
* @return boolean
*/
public function isAccountNonExpired()
return true;
/**
* Implementation of AdvancedUserInterface method
*
* @return boolean
*/
public function isAccountNonLocked()
return true;
/**
* Implementation of AdvancedUserInterface method
*
* @return boolean
*/
public function isCredentialsNonExpired()
return true;
/**
* Implementation of AdvancedUserInterface method
*
* @return boolean
*/
public function isEnabled()
// CHECK IF $this->confirmed is not null
if($this->userConfirmed != null)
return true;
【问题讨论】:
【参考方案1】:当前登录用户存储在twig全局变量app.user
% if app.user.player.team %
show button
% else %
not
% endif %
【讨论】:
然后我得到这个错误:Impossible to access an attribute ("myteam") on a NULL variable ("") 但玩家始终为空,当A玩家有user_id时也是如此 那么你们的关系就残废了。 我必须自己将 player 和 getPlayer()、setPlayer() 添加到 Users 实体,因为自动生成的映射没有添加它。 但它仍然给出 NULL.. 我将我的用户实体添加到我的开始帖子中。以上是关于在基本视图(树枝)+ symfony2 中使用数据库中的数据的主要内容,如果未能解决你的问题,请参考以下文章