Laravel 4 с Sentry 2 добавляет пользователя в группу при регистрации

Итак, я пытаюсь реализовать Sentry 2 с Laravel 4.1. Я использую этот ресурс для этого

https://github.com/rydurham/L4withSentry

Все работает нормально, но теперь я хочу автоматически добавлять пользователя в группу, когда он регистрируется.

Из документов Sentry 2,

    // Find the group using the group id
    $adminGroup = Sentry::findGroupById(5);

    // Assign the group to the user
    $user->addGroup($adminGroup);

Должно сработать. Поэтому я добавил эти строки кода в Authority\Repo\User\SentryUser.php.

Теперь код выглядит так

try {
    //Attempt to register the user. 
    $user = $this->sentry->register(array(
        'username' => e($data['username']),
        'email' => e($data['email']), 
        'password' => e($data['password'])
        ));


       // Find the group using the group id
       $adminGroup = Sentry::findGroupById(5);
      // Assign the group to the user
       $user->addGroup($adminGroup);

    //success!
            $result['success'] = true;
            $result['message'] = trans('users.created');
            $result['mailData']['activationCode'] = $user->GetActivationCode();
    $result['mailData']['userId'] = $user->getId();
    $result['mailData']['email'] = e($data['email']);
}

Но это выдает ошибку

Non-static method Cartalyst\Sentry\Sentry::findGroupById() should not be called statically, assuming $this from incompatible context 

Может ли кто-нибудь пролить свет и сказать мне, что я делаю неправильно? Заранее спасибо


person tintinboss    schedule 31.12.2013    source источник


Ответы (1)


Каким-то образом, когда вы используете Sentry, вы используете не его Facade, а сам класс. Когда вы вызываете класс через фасад, вы на самом деле не используете статику, это просто выглядит так, как будто вы это делаете.

У тебя есть это:

use Cartalyst\Sentry\Sentry;

В вашем коде?

Хорошо, но если эта строка работает для вас:

$user = $this->sentry->register(array(
    'username' => e($data['username']),
    'email' => e($data['email']), 
    'password' => e($data['password'])
    ));

Итак, у вас уже есть экземпляр, и вы наверняка можете сделать:

$adminGroup = $this->sentry->findGroupById(5);
person Antonio Carlos Ribeiro    schedule 31.12.2013
comment
Большое спасибо Антонио!! Ответ был настолько теоретически правильным, что я знал, что он сработает еще до подачи заявки :) И это сработало! Слава! - person tintinboss; 01.01.2014