IN_Array()期望参数2为数组,给定为null



我用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'<输入类型="复选框"名称="复选框[]"'。$检查。'/>';   }

相关内容

  • 没有找到相关文章

最新更新