我用Symfony2进行了Web应用2,我正在使用PUGX用户捆绑包和FosuserBundle来管理2个不同的用户。
这是两个用户之一:
/**
* @ORMEntity
* @ORMTable(name="user_Operator")
* @ORMHasLifecycleCallbacks()
* @UniqueEntity(fields = "username", targetClass = "AcmeManagementBundleEntityUser", message="Username already_used")
* @UniqueEntity(fields = "email", targetClass = "AcmeManagementBundleEntityUser", message="Email already_used")
*/
class UserOperator extends User
{
/**
* @ORMId
* @ORMColumn(type="integer")
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORMPrePersist
*/
public function setCreatedAtValue()
{
$this->addRole('ROLE_OPERATOR');
}
}
当我尝试注册时,我填写表格,提交,而不是显示:
Warning: in_array() expects parameter 2 to be array, null given in C:BitNamiwampstack-
5.4.23-0frameworkssymfonyvendorfriendsofsymfonyuser-
bundleFOSUserBundleModelUser.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捆绑包,因为它有助于轻松管理两种不同类型的用户。用户实体在我的捆绑中,扩展了fosuserbundle ..../model/user.php,并由用户台和用户grounderStation扩展。
该角色的定义是在fosuserbundle .../model/user.php:
/**
* @var array
*/
protected $roles;
,构造是:
public function __construct()
{
$this->roles = array();
}
尝试使用:
if (is_array($this->roles)) {
if (!in_array($role, $this->roles, true)) {
$this->roles[] = $role;
}
}
in_array() expects parameter 2 to be array, null given
对我来说,我只是用parent::__construct()
解决了这个问题;在我的实体上
public function __construct()
{
parent::__construct();
}
您可以一行编码...如果数组不一定总是存在
if ( is_array($maybe_array) AND in_array($needle, $maybe_array) ) {...
由于is_array是false的处理,您的in_array将无法证明您的in_array。
也可以首先检查数组是否没有空。例如:
if (!empty($this->roles) && !in_array($role, $this->roles, true))
/*项目列表 */ $ tocks = array('苹果','香蕉','樱桃','椰子','guava','柠檬','Mango');/*在项目中搜索的水果清单 */ $ fruits = array('苹果','椰子','芒果'); foreach($ item $ item){ if(in_array($ item,$ fruits)){ $检查="检查"; } 别的{ $检查="未选中"; } echo'<输入类型="复选框"名称="复选框[]"'。$检查。'/>'; }