Обновление №1
Итак, я думаю, что выяснил, в чем проблема, но, поскольку мне не хватает знаний, у меня нет способа ее решить.
При использовании Sentry я пытался расширить как «Модель», которая используется по умолчанию, с пакетом Sentry, так и «Красноречивый» Laravel под Illuminate\Database\Eloquent\Model
. Ни один из них не работал. Но при использовании Eloquent от Laravel отдельно (без надстроек пакета Sentry) Stapler работает прекрасно.
Поэтому я предполагаю, что между Stapler и моделью пользователя Sentry существует некоторая проблема совместимости, даже несмотря на то, что она использует Eloquent (его дополнительные функции могут конфликтовать с чертами степлера или функцией построения, я не знаю). Очень жаль, поскольку Sentry — отличный пакет для управления аутентификацией и регулированием, и, насколько я знаю, он широко используется.
Есть ли простой способ использовать агностическую версию степлера с часовым, или мне придется переписать весь мой код, чтобы использовать аутентификацию laravel?
Главный вопрос
Я создаю приложение, которое использует Sentry Cartalyst для управления пользователями. Однако я хочу, чтобы пользователи и другие модели могли иметь связанные аватары, поэтому я также использую степлер Codesleeve.
Я прочитал оба файла laravel-stapler и большую часть stapler, но не смог понять, как заставить их работать с Sentry. Всякий раз, когда я пытаюсь создать пользователя с помощью этой функции:
$user = Sentry::createUser(array(
'username' => Input::get('username'),
'email' => Input::get('email'),
'password' => Input::get('password'),
'activated' => false,
'avatar' => Input::file('avatar')
));
return 'success';
Я получил:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'avatar' in 'field list'
Таким образом, кажется, что Sentry запрашивает, как если бы аватар был строкой, а Stapler не работал.
Вот моя пользовательская модель Sentry (которую я расширяю в Laravel):
use Illuminate\Database\Eloquent\SoftDeletingTrait;
use Illuminate\Database\Eloquent\Model;
use Codesleeve\Stapler\ORM\StaplerableInterface;
use Codesleeve\Stapler\ORM\EloquentTrait;
use Cartalyst\Sentry\Groups\GroupInterface;
use Cartalyst\Sentry\Hashing\HasherInterface;
use Cartalyst\Sentry\Users\LoginRequiredException;
use Cartalyst\Sentry\Users\PasswordRequiredException;
use Cartalyst\Sentry\Users\UserAlreadyActivatedException;
use Cartalyst\Sentry\Users\UserExistsException;
use Cartalyst\Sentry\Users\UserInterface;
class User extends Model implements UserInterface, StaplerableInterface {
use SoftDeletingTrait, EloquentTrait;
protected $fillabe = array('username','email','password','password_temp','code','active','avatar');
public function __construct(array $attributes = array()) {
$this->hasAttachedFile('avatar', [
'styles' => [
'medium' => '300x300',
'thumb' => '100x100'
]
]);
parent::__construct($attributes);
}
protected $dates = ['deleted_at'];
И внутри конфигурации Sentry:
'model' => 'Cartalyst\Sentry\Users\Eloquent\User',
Это может быть просто решить, так как я новичок в Laravel, Sentry и Stapler, но я не смог найти никакой информации, которая помогла бы мне решить проблему.
Заранее спасибо!