前提・実現したいこと
ログイン認証ライブラリcartalyst/sentinel 5.0 を
フレームワーク未使用、開発DBpostgresql9.6.12、開発言語php7.3.3で検証しているのですが
メール二段階認証を実装するため、Activation::create($user)で一時コード値を生成しようとしています
発生している問題・エラーメッセージ
Fatal error: Uncaught Error: Using $this when not in object context in /vendor/cartalyst/sentinel/src/Activations/IlluminateActivationRepository.php:66 Stack trace: #0 /index.php(86): Cartalyst\Sentinel\Activations\IlluminateActivationRepository::create(Object(Cartalyst\Sentinel\Users\EloquentUser)) #1 {main} thrown in /vendor/cartalyst/sentinel/src/Activations/IlluminateActivationRepository.php on line 66
該当のソースコード
use Cartalyst\Sentinel\Native\Facades\Sentinel; use Illuminate\Database\Capsule\Manager as Capsule; require 'vendor/autoload.php'; $capsule = new Capsule; //DB接続情報は仮ですが、接続はできています。 $capsule->addConnection([ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'sentinel', 'username' => 'user', 'password' => 'secret', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', ]); $capsule->bootEloquent(); $user = \Sentinel::register([ 'email' => $email, 'password' => $password ]); $Activation = Sentinel::getActivationRepository(); $activation = Activation::create($user); //下記で生成された一時codeをユーザ登録完了画面URLへ付与する $activation_code = $activation->code;
試したこと
$thisが認識されず、sentinel関連のcoreファイルをいじったりなどしていないのですがこのような状況となっております。他の方法として
vendor/cartalyst/sentinel/src/Activations/IlluminateActivationRepository.php 66行目
$activation = $this->createModel(); ↓ $activation = self::createModel();
上記のようにself::~で呼ぶようにしたのですが、こことは別の箇所で$this when not in object となってしまい、他の$this->の箇所をすべて修正するのは現実的ではないと考えています。
Activation::create()を問題なく動かすにはどのようにしたらよろしいでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/26 09:30