How to solve this error: explode() expects parameter 2 to be string, object given?
How to solve this error: explode() expects parameter 2 to be string, object given?
我正在尝试在我的项目 AppServiceProvider.php
中设置不同的用户类型及其各自的权限,但出现错误
explode() expects parameter 2 to be string, object given
我的代码中没有任何地方我至少可以看到 explode()
。在添加 Inertia::share(function(){})
之前没有这样的错误。
这是我的代码:
public function register()
{
Inertia::version(function () {
return md5_file(public_path('mix-manifest.json'));
});
Inertia::share(function () {
$auth = null;
if (Auth::user()) {
$perms = [];
$user = Auth::user();
if ($user->isSuperAdmin() || $user->isAdmin()) {
$perms = [
[
'url' => '/',
'icon' => 'fa fa-home',
'name' => 'Dashboard'
],
[
//rest of permissions
],
];
}
if ($user->isUser()) {
$perms = [
[
'url' => '/',
'icon' => 'fa fa-home',
'name' => 'Dashboard'
],
[
//rest of permissions
],
];
}
$auth = [
'id' => Auth::user()->id,
'name' => Auth::user()->name,
'card' => Auth::user()->card,
'scard' => Auth::user()->scard,
'user_type_id' => Auth::user()->user_type_id,
'email' => Auth::user()->email,
'perms' => $perms
];
}
return [
'app' => [
'name' => Config::get('app.name'),
],
'auth' => [
'user' => $auth,
],
'flash' => [
'success' => Session::get('success'),
],
'errors' => Session::get('errors') ? Session::get('errors')->getBag('default')->getMessages() : (object)[],
]
});
我做错了什么?在我遇到错误的地方,它没有指定错误的位置,只是它是什么,它表示我提供的代码的最后一行是错误的位置,但所有这些都是右括号和方括号。
对惯性一无所知,看来您在滥用 Inertia::share
功能。在他们的 docs 中,我看到了 3 个示例。前两个的参数 1 是一个字符串(例如 'auth.user'
或 'app.name'
),最后一个的参数 1 是一个关联数组,所以每个元素仍然有一个唯一的字符串键。
在您的代码中,您传递了一个闭包作为第一个参数。我相信您可以通过简单地添加一个名称作为第一个参数来修复它:
Inertia::share('auth.user', function () {
$auth = null;
if (Auth::user()) {
$perms = [];
$user = Auth::user();
if ($user->isSuperAdmin() || $user->isAdmin()) {
$perms = [
[
'url' => '/',
'icon' => 'fa fa-home',
'name' => 'Dashboard'
],
[
//rest of permissions
],
];
}
if ($user->isUser()) {
$perms = [
[
'url' => '/',
'icon' => 'fa fa-home',
'name' => 'Dashboard'
],
[
//rest of permissions
],
];
}
$auth = [
'id' => Auth::user()->id,
'name' => Auth::user()->name,
'card' => Auth::user()->card,
'scard' => Auth::user()->scard,
'user_type_id' => Auth::user()->user_type_id,
'email' => Auth::user()->email,
'perms' => $perms
];
}
return [
'app' => [
'name' => Config::get('app.name'),
],
'auth' => [
'user' => $auth,
],
'flash' => [
'success' => Session::get('success'),
],
'errors' => Session::get('errors') ? Session::get('errors')->getBag('default')->getMessages() : (object)[],
];
});
我正在尝试在我的项目 AppServiceProvider.php
中设置不同的用户类型及其各自的权限,但出现错误
explode() expects parameter 2 to be string, object given
我的代码中没有任何地方我至少可以看到 explode()
。在添加 Inertia::share(function(){})
之前没有这样的错误。
这是我的代码:
public function register()
{
Inertia::version(function () {
return md5_file(public_path('mix-manifest.json'));
});
Inertia::share(function () {
$auth = null;
if (Auth::user()) {
$perms = [];
$user = Auth::user();
if ($user->isSuperAdmin() || $user->isAdmin()) {
$perms = [
[
'url' => '/',
'icon' => 'fa fa-home',
'name' => 'Dashboard'
],
[
//rest of permissions
],
];
}
if ($user->isUser()) {
$perms = [
[
'url' => '/',
'icon' => 'fa fa-home',
'name' => 'Dashboard'
],
[
//rest of permissions
],
];
}
$auth = [
'id' => Auth::user()->id,
'name' => Auth::user()->name,
'card' => Auth::user()->card,
'scard' => Auth::user()->scard,
'user_type_id' => Auth::user()->user_type_id,
'email' => Auth::user()->email,
'perms' => $perms
];
}
return [
'app' => [
'name' => Config::get('app.name'),
],
'auth' => [
'user' => $auth,
],
'flash' => [
'success' => Session::get('success'),
],
'errors' => Session::get('errors') ? Session::get('errors')->getBag('default')->getMessages() : (object)[],
]
});
我做错了什么?在我遇到错误的地方,它没有指定错误的位置,只是它是什么,它表示我提供的代码的最后一行是错误的位置,但所有这些都是右括号和方括号。
对惯性一无所知,看来您在滥用 Inertia::share
功能。在他们的 docs 中,我看到了 3 个示例。前两个的参数 1 是一个字符串(例如 'auth.user'
或 'app.name'
),最后一个的参数 1 是一个关联数组,所以每个元素仍然有一个唯一的字符串键。
在您的代码中,您传递了一个闭包作为第一个参数。我相信您可以通过简单地添加一个名称作为第一个参数来修复它:
Inertia::share('auth.user', function () {
$auth = null;
if (Auth::user()) {
$perms = [];
$user = Auth::user();
if ($user->isSuperAdmin() || $user->isAdmin()) {
$perms = [
[
'url' => '/',
'icon' => 'fa fa-home',
'name' => 'Dashboard'
],
[
//rest of permissions
],
];
}
if ($user->isUser()) {
$perms = [
[
'url' => '/',
'icon' => 'fa fa-home',
'name' => 'Dashboard'
],
[
//rest of permissions
],
];
}
$auth = [
'id' => Auth::user()->id,
'name' => Auth::user()->name,
'card' => Auth::user()->card,
'scard' => Auth::user()->scard,
'user_type_id' => Auth::user()->user_type_id,
'email' => Auth::user()->email,
'perms' => $perms
];
}
return [
'app' => [
'name' => Config::get('app.name'),
],
'auth' => [
'user' => $auth,
],
'flash' => [
'success' => Session::get('success'),
],
'errors' => Session::get('errors') ? Session::get('errors')->getBag('default')->getMessages() : (object)[],
];
});