質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

747閲覧

Laravel5.4のログイン認証機能の実装でregisterのビューに遷移できず、Method [getRegister] does not exist.となる。

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/08/19 04:13

Laravelの学習をララ帳で学習しています。

現在はログイン認証機能実装の章を学習しているのですが、トップからregister.blade.phpに遷移する際に、Method [getRegister] does not exist.というエラーが表示され、遷移することができずにいます。

またlogin.blade.phpに遷移する際にも同様のエラー(Method [getLogin] does not exist.)が出てしまいます。

学習の参考にしているララ帳で使用されているLaravelのバージョンが5.1なのですが、僕が使用しているバージョンは5.4.32です。

そのため、ログイン認証機能実装の手法が多少違っており、Laravelインデックスも参考にしつつ作成しています。

メソッドが存在しないという意味のエラーだと思うので、おそらくRegisterController.phpとLoginController.phpにメソッドを記述すればいいのでしょうが、ググっても解決方法が出てこないので困っています。

解決方法がわかる方がいましたら、教えていただきたいですm(_ _)m

以下に、routes/web.php、RegisterController.php、register.blade.phpのコードを載せさせていただきます。

routes/web.php

php

1<?php 2 3Route::get('/', function () { 4 return view('welcome'); 5}); 6 7Route::get('about', 'PagesController@about'); 8Route::get('contact', 'PagesController@contact'); 9Route::get('/', 'ArticlesController@index'); 10Route::resource('articles', 'ArticlesController'); 11// Authentication routes... 12Route::get('auth/login', 'Auth\LoginController@getLogin'); 13Route::post('auth/login', 'Auth\LoginController@postLogin'); 14Route::get('auth/logout', 'Auth\LoginController@getLogout'); 15 16// Registration routes... 17Route::get('auth/register', 'Auth\RegisterController@getRegister'); 18Route::post('auth/register', 'Auth\RegisterController@postRegister');

RegisterController.php

php

1<?php 2 3namespace App\Http\Controllers\Auth; 4 5use App\User; 6use App\Http\Controllers\Controller; 7use Illuminate\Support\Facades\Validator; 8use Illuminate\Foundation\Auth\RegistersUsers; 9 10class RegisterController extends Controller 11{ 12 use RegistersUsers; 13 14 /** 15 * Where to redirect users after registration. 16 * 17 * @var string 18 */ 19 // protected $redirectTo = '/articles'; 20 protected $redirectTo = '/'; 21 22 /** 23 * Create a new controller instance. 24 * 25 * @return void 26 */ 27 public function __construct() 28 { 29 $this->middleware('guest'); 30 } 31 32 /** 33 * Get a validator for an incoming registration request. 34 * 35 * @param array $data 36 * @return \Illuminate\Contracts\Validation\Validator 37 */ 38 protected function validator(array $data) 39 { 40 return Validator::make($data, [ 41 'name' => 'required|string|max:255', 42 'email' => 'required|string|email|max:255|unique:users', 43 'password' => 'required|string|min:6|confirmed', 44 ]); 45 } 46 47 /** 48 * Create a new user instance after a valid registration. 49 * 50 * @param array $data 51 * @return \App\User 52 */ 53 protected function create(array $data) 54 { 55 return User::create([ 56 'name' => $data['name'], 57 'email' => $data['email'], 58 'password' => bcrypt($data['password']), 59 ]); 60 } 61 protected function guard() 62 { 63 return Auth::guard('guard-name'); 64 } 65} 66

register.blade.php

php

1{{-- resources/views/auth/register.blade.php --}} 2 3@extends('layout') 4 5@section('content') 6<div class="container-fluid"> 7 <div class="row"> 8 <div class="col-md-8 col-md-offset-2"> 9 <div class="panel panel-default"> 10 <div class="panel-heading">Register</div> 11 <div class="panel-body"> 12 @if (count($errors) > 0) 13 <div class="alert alert-danger"> 14 <strong>Whoops!</strong> There were some problems with your input.<br><br> 15 <ul> 16 @foreach ($errors->all() as $error) 17 <li>{{ $error }}</li> 18 @endforeach 19 </ul> 20 </div> 21 @endif 22 23 <form class="form-horizontal" role="form" method="POST" action="/auth/register"> 24 {{-- CSRF対策--}} 25 <input type="hidden" name="_token" value="{{ csrf_token() }}"> 26 27 <div class="form-group"> 28 <label class="col-md-4 control-label">Name</label> 29 <div class="col-md-6"> 30 <input type="text" class="form-control" name="name" value="{{ old('name') }}"> 31 </div> 32 </div> 33 34 <div class="form-group"> 35 <label class="col-md-4 control-label">E-Mail Address</label> 36 <div class="col-md-6"> 37 <input type="email" class="form-control" name="email" value="{{ old('email') }}"> 38 </div> 39 </div> 40 41 <div class="form-group"> 42 <label class="col-md-4 control-label">Password</label> 43 <div class="col-md-6"> 44 <input type="password" class="form-control" name="password"> 45 </div> 46 </div> 47 48 <div class="form-group"> 49 <label class="col-md-4 control-label">Confirm Password</label> 50 <div class="col-md-6"> 51 <input type="password" class="form-control" name="password_confirmation"> 52 </div> 53 </div> 54 55 <div class="form-group"> 56 <div class="col-md-6 col-md-offset-4"> 57 <button type="submit" class="btn btn-primary"> 58 Register 59 </button> 60 </div> 61 </div> 62 </form> 63 </div><!-- .panel-body --> 64 </div><!-- .panel --> 65 </div><!-- .col --> 66 </div><!-- .row --> 67</div><!-- .container-fluid --> 68@endsection

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

いつものようにLaravelではバージョンが違う情報は役に立ちません。

5.4ではroutes/web.phpのログイン関連が全部不要で
Auth::routes();一行だけで済みます。

5.4なら新規インストール後
php artisan make:authだけでログインに必要なものは大体用意されます。

投稿2017/08/19 05:09

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/19 06:39

回答ありがとうございます!バージョンによってそんなに違うのですね、、。 ちなみに、今からphp artisan make:authコマンドでログイン認証を実装できるのでしょうか、、。現在は5.1バージョンの方法(AuthenticatesUsersトレイトに、getLoginなどのメソッドを記述)でやってみたところ、ログインと登録の両方ができるようになりました。 ですが、ログアウトをしようとすると、NotFoundHttpExceptionというエラーが出てしまい、再びつまています、、、。なんとか解決方法を探ってみます。
guest

0

ベストアンサー

Laravel5.1では、LoginControllerで利用しているIlluminate\Foundation\Auth\AuthenticatesUsersトレイトに、getLoginのメソッドがあり、Laravel5.4では確かに同じIlluminate\Foundation\Auth\AuthenticatesUsersトレイトにgetLoginのメソッドが無いみたいですね。
5.1と5.4をそれぞれダウンロードしてみて差分を確認して、5.4の書き方で修正するか、学習中はひとまず素直に対応した5.1バージョンをインストールして進めた方が良いかもしれませんね。
(Laravel5.1はLTSなのでセキュリティ修正は2018/6まで行われメンテナンスされています)

投稿2017/08/19 04:41

編集2017/08/19 04:48
aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/19 06:38

回答ありがとうございます!現在5.1バージョンの方法(AuthenticatesUsersトレイトに、getLoginなどのメソッドを記述)でやったところ、ログインと登録の両方ができるようになりました。 ですが、ログアウトをしようとすると、NotFoundHttpExceptionというエラーが出てしまい、再びつまています、、、。なんとか解決方法を探ってみます。
aro10

2017/08/19 07:05

kawaxさんの回答の通り、Laravelで5.1、5.2、5.3、5.4というマイナーバージョンの変化時に色々とリファクタリングやメソッドをより適切なものに変更などがあるので、複数箇所で動かない場合はたまたまパッチで動いただけを繰り返すのも大変なのででララ帳学習中は記載された対応バージョンの5.1で開発するのが良いかと思います。 その後、Laracast等で5.4の最新情報を学習するのが良いかと思います。 以下にCHANGELOG-5.x.mdで各修正点がまとめられていますが、マイナーバージョン内でも互換性とテストを重視しながら機能追加や修正が絶えず行われています。 https://github.com/laravel/framework
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問