###前提・実現したいこと
現在adminユーザーと言うユーザーでログインできるように機能実装しています
ユーザー登録はできました
このadminユーザーでのログインの場合メールではなく電話番号を使いたいと思っています
###発生している問題・エラーメッセージ
BadMethodCallException Method [validateTelephoneNumber] does not exist. /home/vagrant/code/LoginTest/LoginTest/vendor/laravel/framework/src/Illuminate/Validation/Validator.php } /** * Handle dynamic calls to class methods. * * @param string $method * @param array $parameters * @return mixed * * @throws \BadMethodCallException */ public function __call($method, $parameters) { $rule = Str::snake(substr($method, 8)); if (isset($this->extensions[$rule])) { return $this->callExtension($rule, $parameters); } throw new BadMethodCallException("Method [$method] does not exist."); } }
###該当のソースコード
コントローラーです。冒頭でuse Auth;としています
public function postLogin(Request $request) { $this->validate($request,[ 'telephone_number' => 'telephone_number|required', 'password' => 'required|min:4' ]); if(Auth::attempt(['telephone_number' => $request->input('telephone_number'), 'password' => $request->input('password')])){ return redirect()->route('admin.profile'); } return redirect()->back(); }
###試したこと
こちらの公式ページに
https://readouble.com/laravel/5.5/ja/authentication.html
ユーザー名のカスタマイズ デフォルトでLaravelはemailフィールドを認証に利用します。これをカスタマイズしたい場合は、LoginControllerでusernameメソッドを定義してください。 public function username() { return 'username'; }
と言うふうにありましたのでLoginControllerを
public function username() { return 'telephone_number'; }
と言うふうに変更しました
ですが結果は変わらずです。
config auth.phpには
'admins' => [ 'driver' => 'eloquent', 'model' => App\Admin::class, ],
と、追記しています
今回の場合、電話番号を認証に使えるようにする設定が足りていないと言うことなのでしょうか?LoginControllerなどの設定で間違っている部分、足りていない部分など気がつかれました空がいらっしゃいましたらご指摘いただけないでしょうか
よろしくお願いいたします
###補足情報(言語/FW/ツール等のバージョンなど)
Laravel5.5
DB Mysql
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/22 03:31