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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Laravel 5

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

Q&A

1回答

3966閲覧

Laravelで新規ユーザー登録後に画面遷移しない問題

chocomint20

総合スコア1

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Laravel 5

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

0グッド

0クリップ

投稿2020/08/31 17:08

編集2022/01/12 10:55

Laravelで新規登録後にプロフィール画面に遷移させたいのですが、登録の処理は出来ているし、ChromeのデベロッパーツールでNetworkで通信を確認してもちゃんとPOSTされた後にリダイレクトしたいURLもResponseで返ってきているのですが、何故か画面は切り替わらず登録画面のままです、プロパティのリダイレクト先も変更したのですが、原因がいくら調べてもわかりません何故なのか分かる方いらっしゃいますか

Network

1**register** 2 3Request URL: http://homestead.test/register 4Request Method: POST 5Status Code: 302 Found 6Remote Address: 192.168.20.10:80 7Referrer Policy: no-referrer-when-downgrade 8 9**profile** 10Request URL: http://homestead.test/mypage/profile 11Request Method: GET 12Status Code: 200 OK 13Remote Address: 192.168.20.10:80 14Referrer Policy: no-referrer-when-downgrade

web.php

Route::get('/mypage/profile', 'UserController@showProf')->name('mypage.prof');

UserController.php

// プロフィール画面表示 public function showProf() { $user = Auth::user(); return view('user.prof', [ 'user' => $user, ]); }

Router.php

public function auth(array $options = []) { // Authentication Routes... $this->get('login', 'Auth\LoginController@showLoginForm')->name('login'); $this->post('login', 'Auth\LoginController@login'); $this->get('logout', 'Auth\LoginController@showLogout')->name('logout'); $this->post('logout', 'Auth\LoginController@logout'); // Registration Routes... if ($options['register'] ?? true) { $this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register'); $this->post('register', 'Auth\RegisterController@register'); } $this->get('withdraw', 'Auth\RegisterController@showWithdraw')->name('withdraw'); // Password Reset Routes... if ($options['reset'] ?? true) { $this->resetPassword(); } // Email Verification Routes... if ($options['verify'] ?? false) { $this->emailVerification(); } }

RegisterController.php

<?php namespace App\Http\Controllers\Auth; use App\User; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; use Illuminate\Foundation\Auth\RegistersUsers; class RegisterController extends Controller { /* |-------------------------------------------------------------------------- | Register Controller |-------------------------------------------------------------------------- | | This controller handles the registration of new users as well as their | validation and creation. By default this controller uses a trait to | provide this functionality without requiring any additional code. | */ use RegistersUsers; /** * Where to redirect users after registration. * * @var string */ protected $redirectTo = '/mypage/profile'; /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('guest'); } /** * Get a validator for an incoming registration request. * * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ protected function validator(array $data) { return Validator::make($data, [ 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:6',], ]); } /** * Create a new user instance after a valid registration. * * @param array $data * @return \App\User */ protected function create(array $data) { return User::create([ 'email' => $data['email'], 'password' => Hash::make($data['password']), ]); } }

RegistersUsers.php

<?php namespace Illuminate\Foundation\Auth; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Auth\Events\Registered; trait RegistersUsers { use RedirectsUsers; /** * Show the application registration form. * * @return \Illuminate\Http\Response */ public function showRegistrationForm() { return view('auth.register'); } /** * Handle a registration request for the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function register(Request $request) { $this->validator($request->all())->validate(); event(new Registered($user = $this->create($request->all()))); $this->guard()->login($user); return $this->registered($request, $user) ?: redirect($this->redirectPath()); } /** * Get the guard to be used during registration. * * @return \Illuminate\Contracts\Auth\StatefulGuard */ protected function guard() { return Auth::guard(); } /** * The user has been registered. * * @param \Illuminate\Http\Request $request * @param mixed $user * @return mixed */ protected function registered(Request $request, $user) { // } }

register.blade.php

@extends('layouts.app2') @section('title', '会員登録') @section('content') <div id="app"> <user-register></user-register> </div> @endsection

UserRegister.vue

<template> <div class="l-form p-form"> <h2 class="l-form__head p-form__head"> 新規会員登録 </h2> <div class="l-form__body p-form__body"> <div class="l-form-conteiner"> <div class="form-group"> <label for="email" class="l-form__label p-form__label">メールアドレス</label> <span class="label-require">必須</span> <input id="email" class="l-form__input p-form__input" :class="{ hasErr: errors.email }" type="text" v-model="email" placeholder="PC・携帯どちらでも可"> <div class="area-msg"> {{ errors.email }} </div> </div> <div class="form-group"> <label for="password" class="l-form__label p-form__label">パスワード</label> <span class="label-require">必須</span> <input id="password" class="l-form__input p-form__input" :class="{ hasErr: errors.password }" type="password" v-model="password" placeholder="6文字以上の半角英数字"> <div class="area-msg"> {{ errors.password }} </div> </div> <button type="button" class="p-btn btn-primary" @click="register">登録する</button> </div> </div> </div> </template> <script> export default { data: function() { return { email: '', password: '', errors: '' } }, methods: { register: function () { this.errors = {}; var self = this; var url = '/register'; var params = { email: this.email, password: this.password, }; axios.post(url, params) .then(function (response) { self.email = ''; self.password = ''; }) .catch(function (error) { var responseErrors = error.response.data.errors; var errors = {}; for(var key in responseErrors) { errors[key] = responseErrors[key][0]; } self.errors = errors; }); } }, mounted() { console.log('Component mounted.') } } </script>

追記(試したこと)
①RegisterController.phpの

protected $redirectTo = '/home';

これを

protected $redirectTo = '/mypage/profile';

これに変えた。

②RegisterController.phpに

protected function redirectTo() { return route('mypage.prof'); }

上記のredirectToメソッドを作成

③ブラウザをChromeでやっていたので、safariに変えてみた

④vagrantとhomesteadでサーバーを立ててやっていたので、php artisan serveの方でやってみた

⑤php artisan キャッシュクリア系のコマンドでキャッシュクリアしてみた

上記のことを試しても挙動が変わりませんでした。自分で調べれる限りは試してみたのですがエラーも出ていないしさっぱり原因がわかりません。他に考えうる原因はあるのでしょうか?

ちなみに下記画像のように遷移先のURLはGETでResponseがちゃんと返ってきています
イメージ説明

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

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

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

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

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

guest

回答1

0

https://qiita.com/tiwu_dev/items/2a95baecb8c23eef3c67

redirectTo()$redirectToよりも優先されます。

投稿2020/08/31 21:32

編集2020/08/31 21:32
kyoya0819

総合スコア10429

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

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

chocomint20

2020/09/01 01:44

回答ありがとうございます。RegisterController内にredirectToメソッド作成し、/mypage/profileへのパスを通したのですが、挙動は変わりませんでした。試しにLoginControllerにも同じ処理を書きましたがこれもだめみたいです。Responseはちゃんと返って来てるのに、画面だけ切り替わらないって一体なんなんでしょう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問