私が設定さ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に等しいです。
ありがとうございました。
*:
の代わりに:
それは次のようにする必要があります*。私は完全に次はないよ ' –
;'する$ user-> getPermission()は '' $ user_perm =配列( '値=> NULL)のようなものを返します。私は前に述べたエラーを取得しています理由を知りたいと思います:) 'createPreparedPermission'機能で – mattyh88
この' $準備= array_merge($用意し、$パーミッション);以前に宣言として '配列であることを' $ permissions'を期待しましたempyとして '$ pernissions []';しかし、あなたのコードは予期された***データタイプ***ではない 'NULL'を提供し、エラーを生成しました。修正するには、あなたのコードを作ることです、あなたのケースで**空**配列は十分であろう、と予想*** ***データ型の値を返します。 –