我用Symfony2製作了一個Web應用程序,並且我使用PUGX User Bundle和FosUserBundle來管理2個不同的用戶。in_array()期望參數2是數組,空給出
這是兩個用戶中的一個:
/**
* @ORM\Entity
* @ORM\Table(name="user_Operator")
* @ORM\HasLifecycleCallbacks()
* @UniqueEntity(fields = "username", targetClass = "Acme\ManagementBundle\Entity\User", message="Username already_used")
* @UniqueEntity(fields = "email", targetClass = "Acme\ManagementBundle\Entity\User", message="Email already_used")
*/
class UserOperator extends User
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\PrePersist
*/
public function setCreatedAtValue()
{
$this->addRole('ROLE_OPERATOR');
}
}
當我嘗試註冊時,填寫表格,提交,比出現:
Warning: in_array() expects parameter 2 to be array, null given in C:\BitNami\wampstack-
5.4.23-0\frameworks\symfony\vendor\friendsofsymfony\user-
bundle\FOS\UserBundle\Model\User.php line 142
行142是以下幾點:
135 public function addRole($role)
{
$role = strtoupper($role);
if ($role === static::ROLE_DEFAULT) {
return $this;
}
142 if (!in_array($role, $this->roles, true)) {
$this->roles[] = $role;
}
return $this;
}
不知道,因爲我有這個問題,因爲我在用戶和任務之間建立了關聯@ORM \ ManyToMany,那是另一個在這裏沒有出現的實體。在此之前,我沒有這個問題。
我使用PUGXUser Bundle,因爲它有助於輕鬆管理兩種不同類型的用戶。用戶實體在我的包中,擴展了FosUserBundle ..../Model/User.php,並由UserOperator和UserGroundStation擴展。
角色的定義是在FosUserBundle ... /型號/ user.php的:
/**
* @var array
*/
protected $roles;
和costruct是:
public function __construct()
{
$this->roles = array();
}
在類中將'$ this-> roles'初始化爲'= array();'。 –
你不應該爲2個不同的用戶使用2個捆綁包。例如,FOSUserBundle爲您提供了關於用戶管理所需的一切。 – Xatenev
請顯示'$ roles'屬性定義。這是一個簡單的數組還是一個Doctrine ArrayCollection? –