Symfony2 で Web アプリケーションを作成し、PUGX User Bundle と FosUserBundle を使用して 2 人のユーザーを管理しています。
これは 2 人のユーザーのうちの 1 人です。
/**
* @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;
}
User と Mission の間に @ORM\ManyToMany という関連付けを作成したため、この問題が発生したため、わかりません。これは、ここには表示されない別のエンティティです。この前は、この問題はありませんでした。
PUGXUser Bundle を使用すると、2 種類のユーザーを簡単に管理できます。User Entity は私のバンドルにあり、FosUserBundle..../Model/User.php を拡張し、UserOperator と UserGroundStation によって拡張されます。
ロールの定義は FosUserBundle.../Model/User.php にあります:
/**
* @var array
*/
protected $roles;
構造体は次のとおりです。
public function __construct()
{
$this->roles = array();
}