2

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();
}
4

5 に答える 5

6

in_array() expects parameter 2 to be array, null given

私にとっては、この問題をparent::__construct();だけで解決しました。私のエンティティで

public function __construct()
{
    parent::__construct();
}
于 2015-08-05T14:54:38.760 に答える
3

1行でコーディングできます...配列が常に存在するとは限らない場合は必須

if ( is_array($maybe_array) AND in_array($needle, $maybe_array) ) {...

AND 句の処理のため、is_array が false の場合、in_array は証明されません。

于 2016-04-22T05:20:48.000 に答える
-1
/*アイテムのリスト */
    $items = array('Apple', 'Banana', 'Cherry', 'Coconut', 'Guava', 'Lemon', 'Mango');
/*Items で検索する果物のリスト */
    $fruits = array('Apple', 'ココナッツ', 'マンゴー');
    foreach ($item としての $item) {
        if (in_array($item, $fruits)) {
    $checked = "チェック済み";
        }
        そうしないと{
    $checked = "未チェック";
        }
   echo '< input type="checkbox" name="checkboxes[]"' . $checked . ' />';
   }

于 2014-06-16T11:47:18.573 に答える