0

我希望从包的中间件触发的 HttpException 返回一个视图,目前,它返回一个静态 403 异常,我想将其更改为包中的自定义视图。

但是,我尝试在异常本身中返回一个视图,但由于接收到 TypeError,这被证明是徒劳的。TypeError Return value of Username\Roles\Exceptions\InsufficientRoleException::forRoles() must be an instance of Username\Roles\Exceptions\InsufficientUsergroupException, instance of Illuminate\View\View returned

这是代码块本身,如果有人知道无需修改即可完成此操作的方法,App\Exceptions\Hander.php那将是惊人的,因为我试图将其保留在包代码本身中,并且不对每个 Laravel 应用程序进行手动编辑。

<?php

namespace Username\Roles\Exceptions;

use Symfony\Component\HttpKernel\Exception\HttpException;

class InsufficientUsergroupException extends HttpException
{
    private $requiredRoles = [];

    public static function forRoles(array $$roles): self
    {
        $permStr = implode(', ', $roles);

        $error = 'Insufficient permissions to access this page.';
        $exception = new static(403, $error, null, []);
        $exception->requiredRoles = $roles;

        //return $exception;

        return view('role::InsufficientRoleAccess')->with('role', $permStr);
    }
    
    public function getRequiredRoles): array
    {
        return $this->requiredRoles;
    }
}

您能提供的任何支持将不胜感激!谢谢您阅读此篇。:)

4

0 回答 0