在 voyage admin 的字符串上调用成员函数 relationLoaded()
Call to a member function relationLoaded() on string on voyage admin
我从 here
成功安装了 voyager admin
在我的客户端页面上,我创建了一个从 auth 派生的自定义注册。我可以成功注册用户。
安装航海者管理员后,我在客户的注册表单上添加了一个新用户。然后,当我尝试访问 http://localhost:8000/admin
时发生错误,如图所示。
下面是第 53 行的图像:
下面是VoyagerUse.php
的全部代码
<?php
namespace TCG\Voyager\Traits;
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
use TCG\Voyager\Facades\Voyager;
use TCG\Voyager\Models\Role;
/**
* @property \Illuminate\Database\Eloquent\Collection roles
*/
trait VoyagerUser
{
public function role()
{
return $this->belongsTo(Voyager::modelClass('Role'));
}
/**
* Check if User has a Role(s) associated.
*
* @param string|array $name The role to check.
*
* @return bool
*/
public function hasRole($name)
{
if (!$this->relationLoaded('role')) {
$this->load('role');
}
return in_array($this->role->name, (is_array($name) ? $name : [$name]));
}
public function setRole($name)
{
$role = Voyager::model('Role')->where('name', '=', $name)->first();
if ($role) {
$this->role()->associate($role);
$this->save();
}
return $this;
}
public function hasPermission($name)
{
if (!$this->relationLoaded('role')) {
$this->load('role');
}
if (!$this->role->relationLoaded('permissions')) {
$this->role->load('permissions');
}
return in_array($name, $this->role->permissions->pluck('key')->toArray());
}
public function hasPermissionOrFail($name)
{
if (!$this->hasPermission($name)) {
throw new UnauthorizedHttpException(null);
}
return true;
}
public function hasPermissionOrAbort($name, $statusCode = 403)
{
if (!$this->hasPermission($name)) {
return abort($statusCode);
}
return true;
}
}
如第 53 行的 VoyagerUser 中所述:
if(!$this->role->relationLoaded('permissions')){ ...
这里的角色被认为是关系而不是字段:)
和错误
Call to a member function relationLoaded() on string
表示您在用户模型中具有作为属性的角色
因此,您只需将角色属性重命名为其他名称,一切都会完美运行;)
您应该简单地更改名为 role 的属性的名称,因为 Voyager 也添加了一个名为 role 的关系
我从 here
成功安装了 voyager admin在我的客户端页面上,我创建了一个从 auth 派生的自定义注册。我可以成功注册用户。
安装航海者管理员后,我在客户的注册表单上添加了一个新用户。然后,当我尝试访问 http://localhost:8000/admin
时发生错误,如图所示。
下面是第 53 行的图像:
下面是VoyagerUse.php
的全部代码<?php
namespace TCG\Voyager\Traits;
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
use TCG\Voyager\Facades\Voyager;
use TCG\Voyager\Models\Role;
/**
* @property \Illuminate\Database\Eloquent\Collection roles
*/
trait VoyagerUser
{
public function role()
{
return $this->belongsTo(Voyager::modelClass('Role'));
}
/**
* Check if User has a Role(s) associated.
*
* @param string|array $name The role to check.
*
* @return bool
*/
public function hasRole($name)
{
if (!$this->relationLoaded('role')) {
$this->load('role');
}
return in_array($this->role->name, (is_array($name) ? $name : [$name]));
}
public function setRole($name)
{
$role = Voyager::model('Role')->where('name', '=', $name)->first();
if ($role) {
$this->role()->associate($role);
$this->save();
}
return $this;
}
public function hasPermission($name)
{
if (!$this->relationLoaded('role')) {
$this->load('role');
}
if (!$this->role->relationLoaded('permissions')) {
$this->role->load('permissions');
}
return in_array($name, $this->role->permissions->pluck('key')->toArray());
}
public function hasPermissionOrFail($name)
{
if (!$this->hasPermission($name)) {
throw new UnauthorizedHttpException(null);
}
return true;
}
public function hasPermissionOrAbort($name, $statusCode = 403)
{
if (!$this->hasPermission($name)) {
return abort($statusCode);
}
return true;
}
}
如第 53 行的 VoyagerUser 中所述:
if(!$this->role->relationLoaded('permissions')){ ...
这里的角色被认为是关系而不是字段:)
和错误
Call to a member function relationLoaded() on string
表示您在用户模型中具有作为属性的角色
因此,您只需将角色属性重命名为其他名称,一切都会完美运行;)
您应该简单地更改名为 role 的属性的名称,因为 Voyager 也添加了一个名为 role 的关系