2017-09-30 7 views
0

私が設定さCartalyst \センチネル(v2.0.15)パッケージでLaravel 5.3プロジェクトを持っている与えられた、配列型でなければなりません。私はこのライン引数2 ::権限を準備するには、()はnull

$hasPermission = Sentinel::getUser()->hasAccess($routeName); 

を持っているしかし、私はこのエラーメッセージの取得維持:私はGoogleで外観とパッケージのgithubのページを持っていたが、私はこの問題を解決するのに役立つだろう何かを見つけることができませんでした

Argument 2 passed to 
Cartalyst\Sentinel\Permissions\StandardPermissions::prepare Permissions() must be of the type array, null given 

を問題。

私はパッケージのソースコードに見ると、私は、コードのこの部分を参照してください。

/** 
* {@inheritDoc} 
*/ 
protected function createPreparedPermissions() 
{ 
    $prepared = []; 

    // $this->secondaryPermissions equals to: 
    // [ 
    //  0 => NULL, 
    // ] 
    if (! empty($this->secondaryPermissions)) { 
     foreach ($this->secondaryPermissions as $permissions) { 
      // this is the line where it throws the error as $permissions == NULL 
      $this->preparePermissions($prepared, $permissions); 
     } 
    } 

    if (! empty($this->permissions)) { 
     $permissions = []; 

     $this->preparePermissions($permissions, $this->permissions); 

     $prepared = array_merge($prepared, $permissions); 
    } 

    return $prepared; 
} 

secondaryPermissions配列が空ではありません。これらの「セカンダリ」パーミッションは何ですか?私はSentinelのドキュメンテーションページを見ましたが、これについて何も見つかりませんでした。私が見つけることができる唯一のことは、「ユーザー」が権限を持つことができますが、「役割」もあります。現在のデータベース設定では、ロールに権限がありますが、ユーザーには特定の権限がありません。だから私のユーザーのテーブルの '権限'フィールドは常にNULLに等しいです。

ありがとうございました。

+0

*:

{"controller.action": true, "controller.actionTwo": true} 

の代わりに:

それは次のようにする必要があります*。私は完全に次はないよ ' –

+0

;'する$ user-> getPermission()は '' $ user_perm =配列( '値=> NULL)のようなものを返します。私は前に述べたエラーを取得しています理由を知りたいと思います:) 'createPreparedPermission'機能で – mattyh88

+0

この' $準備= array_merge($用意し、$パーミッション);以前に宣言として '配列であることを' $ permissions'を期待しましたempyとして '$ pernissions []';しかし、あなたのコードは予期された***データタイプ***ではない 'NULL'を提供し、エラーを生成しました。修正するには、あなたのコードを作ることです、あなたのケースで**空**配列は十分であろう、と予想*** ***データ型の値を返します。 –

答えて

0

修正済みです。 問題は、アクセス許可が誤ってデータベースに格納されていたことでした。あなたは**値= nullを指定して空の配列 `配列()`は空の配列を返すために、ユーザーのアクセス許可を変更することができ

{"controller.action: true", "controller.actionTwo: true"} 
関連する問題