在Laravel 5.2中触发事件后返回结果

在Laravel 5.2中触发事件后返回结果,laravel,laravel-5,laravel-5.2,laravel-5.1,Laravel,Laravel 5,Laravel 5.2,Laravel 5.1,下面是我的原始代码 /* Create the Role */ $result = (new RoleDb())->Create($obj); if($result["Success"]) { /* | Get all Modules */ $Permissions = $this->Module->All($obj->RoleID); $list = []; /* | Prepare the

下面是我的原始代码

/*
   Create the Role
*/  

$result = (new RoleDb())->Create($obj);

if($result["Success"]) {

    /*
    | Get all Modules 
    */

    $Permissions = $this->Module->All($obj->RoleID);
    $list = [];

    /*
    | Prepare the list that will be assigned to Newly created role.
    */

    foreach($Permissions["Data"] as $Permission) {
        $RolePermissionOM = new RolePermissionOM();
        $RolePermissionOM->PermissionID             = $Permission->PermissionID;
        $RolePermissionOM->IsActive                 = $Permission->DefaultPermission;
        $RolePermissionOM->RoleID                   = $result["Data"];
        array_push($list, $RolePermissionOM);
    }

    /*
    | Create default permissions for above created role.
    */

    return $this->RolePermission->CreateDefaultPermissions($list, $result["Data"]);
}
现在,在我的应用程序中,还有3个点正在创建角色,我希望将此代码转换为事件,而不是代码复制。因此,每当创建角色时,都会触发一个事件来创建该角色的权限记录

Event::fire(new RoleCreationEvent($result));
// `$result` contains the newly created RoleID.
问题:在我的原始代码中,我能够得到检查权限是否正确保存的结果。如果触发事件,我将如何执行该操作

事件代码

class RolePermissionEvent extends Event
{
    use SerializesModels;

    public function __construct($RoleID, $Module, $RolePermission)
    {

        $Permissions = $Module->All($RoleID);
        $list = [];

        foreach($Permissions["Data"] as $Permission) {
            $RolePermissionOM = new RolePermissionOM();
            $RolePermissionOM->PermissionID = $Permission->PermissionID;
            $RolePermissionOM->RoleID       = $RoleID;
            array_push($list, $RolePermissionOM);
        }

        return $RolePermission->CreateDefaultPermissions($list, $RoleID);
    }
}
  • 创建一个侦听器,如下所述
  • 将所有代码从构造函数移动到侦听器
  • 将偶数传递给允许其使用事件数据的侦听器
  • Return“Return$RolePermission->CreateDefaultPermissions($list,$RoleID);”来自听众
  • 创建一个侦听器,如下所述
  • 将所有代码从构造函数移动到侦听器
  • 将偶数传递给允许其使用事件数据的侦听器
  • Return“Return$RolePermission->CreateDefaultPermissions($list,$RoleID);”来自听众

  • 事件不应该返回值,它们只是对发生的事情作出反应。比如在新用户注册后发送电子邮件


    在您的情况下,请使用而不是域事件。另外,您也可以使用服务类。

    事件不应该返回值,它们只是对发生的事情做出反应。比如在新用户注册后发送电子邮件


    在您的情况下,请使用而不是域事件。另外,您也可以使用服务类。

    旁白:我在生活中看到过很多代码注释,但将管道作为延续字符是我的第一次。我喜欢!从侦听器返回结果。事件::fire(新角色扮演事件($result));将在数组中返回所有这些结果。@AndrejLudinovskov:在我刚才添加的事件代码中,返回值,如果我签入事件,我可以看到返回的数据,但当我尝试此…$result=\Event::fire(新角色权限事件($result[“data”],$this->Module,$this->RolePermission));dd(结果)它返回空数组。只需发布你的侦听器。你的代码不会像你想要的那样工作。旁白:我在生活中看到了很多代码注释,但作为延续字符的管道是我的第一次。我喜欢!从侦听器返回结果。事件::fire(新角色扮演事件($result));将在数组中返回所有这些结果。@AndrejLudinovskov:在我刚才添加的事件代码中,返回值,如果我签入事件,我可以看到返回的数据,但当我尝试此…$result=\Event::fire(新角色权限事件($result[“data”],$this->Module,$this->RolePermission));dd(结果)它返回空数组。只需发布您的侦听器。好吧,您的代码将无法按您所希望的方式工作。您是否认为从侦听器返回值是最好的方法?正如你们上面提到的,你们认为从听者那个里返回值是最好的方法吗?正如你上面提到的。