2016-08-18 20 views
0

私のvalidatorメソッドで私の登録フォームでいくつかの検証をしようとしています。 $user->idを私のnameemailの配列キーに連結していますので、ユーザーは同じ名前の&電子メールアドレスをすでに取得しているので登録できません。 laravel validation 5.1認証されたユーザー

AuthController
<?php 

namespace App\Http\Controllers\Auth; 

use App\User; 
use Validator; 
use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\ThrottlesLogins; 
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers; 

class AuthController extends Controller 
{ 

    use AuthenticatesAndRegistersUsers, ThrottlesLogins; 

    public function __construct() 
    { 
     $this->middleware('guest', ['except' => 'getLogout']); 
    } 

    protected function validator(array $data) 
    { 

     return Validator::make($data, [ 
      'name' => 'required|regex:/^[a-zA-Z]+$/u|max:255|unique:users,name,'.$user->id, 
      'email' => 'required|email|max:255|unique:users'.$user->id, 
      'password' => 'required|confirmed|min:6', 
     ]); 
    } 

} 

私はこの

// retrieve authenticated user 
    $user = Auth::user(); 
    protected function validator(array $data) 
    { 

     return Validator::make($data, [ 
      'name' => 'required|regex:/^[a-zA-Z]+$/u|max:255|unique:users,name,'.$user->id, 
      'email' => 'required|email|max:255|unique:users'.$user->id, 
      'password' => 'required|confirmed|min:6', 
     ]); 
    } 

ように私のバリデータメソッドの上$user = Auth::user();を追加しようとするので、私はUndefined variable: userエラーメッセージが表示されます提出打つたびに私はsyntax error, unexpected '$user'エラーを取得

以下メッセージ。私は何が見落としているのか分かりません。

答えて

1

$userオブジェクトを持っていないときに新規ユーザーを作成するときに、確かにUndefined variable: userというエラーメッセージが表示されます。

あなたの検証は、ユーザープロフィールの更新にのみ有効です。

コードに構文エラーがあります。正しいものは次のとおりです。

return Validator::make($data, [ 
     'name' => 'required|regex:/^[a-zA-Z]+$/u|max:255|unique:users,name', 
     'email' => 'required|email|max:255|unique:users,email', 
     'password' => 'required|confirmed|min:6', 
    ]); 
+0

laravelの登録時に重複する名前と電子メールアドレスを検証するにはどうすればよいですか?あなたは正しい方向に私を向けることができますか? –

+0

名前とメールで一意の行にしたいですか?その真実なら、あなたは$ user-> idを使用しないでください。 – hizbul25

+0

私は達成しようとしていることを考えています。たとえば、ユーザーが「foo」という名前でサインアップし、「foo @ foo.com」というメールを送信したとします。他の誰かが同じ資格でサインアップするのをやめてください。 –

関連する問題