validate驗證類,在不同的控制器下,為什么會產(chǎn)生不同效果,而且使用auth自帶登錄注冊功能
我的版本是laravel5.4
// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)
這是/app/Http/Controllers/Auth/LoginController.php
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;//這里必須引入request類才能傳參數(shù)給重寫的validateLogin函數(shù)
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
* 登錄后重定向用戶的位置。
* @var string
*/
// protected $redirectTo = '/home';
protected function redirectTo()
{
return route('home') ;
}
/*
* protected validateLogin方法
* @param \Illuminate\Http\Request $request
* 重寫登錄驗證
*/
protected function validateLogin(Request $request)
{
$attributes = array(
"required" => ":attribute 不能為空",
"between" => ":attribute 長度必須在 :min 和 :max 之間",
"string"=>":attribute 必須字符串",
"email"=>":attribute 已經(jīng)存在郵箱",
"max"=>":attribute 最大值",
"min"=>":attribute 最小值",
"confirmed"=>":attribute 驗證字段必須有一個匹配字段 foo_confirmation,例如,如果驗證字段是 password,必須輸入一個與之匹配的password_confirmation 字段。",
"unique"=>":attribute 已經(jīng)存在唯一郵箱"
);
$message= array(
'email'=>'請輸入合法郵箱',
'password'=>'請輸入密碼'
);
//validate使用對象的方法,傳入的必須是一個request對象
$this->validate($request, [
'email' => 'required|string|email|min:10', //這里不需要指定unique:users,插入才需要唯一,查詢不需要
'password' => 'required|string',
],$attributes,$message);
}
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//其中這個except表示logout這個方法將不會受到這個中間件的影響 logout通常是登出方法
$this->middleware('guest')->except('logout');
}
public function showLoginForm()
{
return view("home.home_login");
}
}
======================================
這是/app/Http/Controllers/Auth/RegisterController.php
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use App\Http\Controllers\Controller;
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;
/**
* 重寫前臺注冊方法,可以覆蓋use RedirectsUsers類里面的方法
*
* @return \Illuminate\Http\Response
*/
public function showRegistrationForm()
{
return view("home.home_register");
}
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//這里中間件驗證是否已經(jīng)登錄,在RedirectIfAuthenticated類里面
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
$attributes = array(
"required" => ":attribute 不能為空",
"between" => ":attribute 長度必須在 :min 和 :max 之間",
"string"=>":attribute 必須字符串",
"email"=>":attribute 已經(jīng)存在郵箱",
"max"=>":attribute 最大值",
"confirmed"=>":attribute 驗證字段必須有一個匹配字段 foo_confirmation,例如,如果驗證字段是 password,必須輸入一個與之匹配的password_confirmation 字段。",
"unique"=>":attribute 已經(jīng)存在唯一郵箱"
);
$message= array(
'name'=>'名字不能為空',
'email'=>'請輸入合法郵箱',
'password'=>'請輸入密碼'
);
$validator= Validator::make($data, [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users', //指定users表,這是在插入數(shù)據(jù)時,檢查是否有唯一數(shù)據(jù),更新的時候不要用這個參數(shù)
//unique:table,column,except,idColumn
//驗證字段在給定數(shù)據(jù)表上必須是唯一的,如果不指定column選項,字段名將作為默認(rèn)column。
'password' => 'required|string|min:6|confirmed',
// confirmed驗證此規(guī)則的值必須和 foo_confirmation 的值相同。比如,需要驗證此規(guī)則的域是 password,那么在輸入中必須有一個與之相同的 password_confirmation 域。
],$attributes,$message);
return $validator;
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
}
為什么login登錄頁面提示錯誤,卻沒有顯示自定義錯誤
Register注冊頁面提示卻正常,請我究竟錯在哪里了
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。