2017-01-03 79 views
0

我試圖在用戶註冊時讓電子郵件爲可選項。這裏是package。所以,我在此函數刪除email' => 'required|email|unique:users',在Laravel中無需電子郵件地址驗證用戶

public function signup(Request $request) 
{ 
    $credentials = $request->all(); 
    $validator = Validator::make($credentials, [ 
     'name' => 'required', 
     'email' => 'required|email|unique:users', 
     'password' => 'required|min:6|confirmed', 
     'password_confirmation' => 'required|min:3' 
    ]); 
    if ($validator->fails()) { 
     throw new ValidationHttpException($validator->errors()->all()); 
    } 
    try { 
     $user = $this->users->create($request->except('roles', 'permissions')); 
     if (!$user->id) { 
      return $this->response->error('could_not_create_user', 500); 
     } 

     $hasToReleaseToken = Config::get('boilerplate.signup_token_release'); 
     if ($hasToReleaseToken) { 
      return $this->login($request); 

     } 

     return $this->response->created(); 
    } catch (\Exception $e) { 
     return $this->response->error($e->getMessage(), 500); 
    } 

} 

然後在配置-boilerplate.php我也刪除電子郵件:

'signup_fields_rules' => [ 
    'name' => 'required', 
    'email' => 'required|email|unique:users',///// this 
    'password' => 'required|min:6' 
], 

但當我註冊了我得到這個錯誤:

「message」:「Undefined index:email」, 「status_code」:500, 「debug」:{ 「line」:173, 「file」:「/ Users/MyMac /Desktop/Project/laravel-5.3-boilerplate-api-jwt-vue2/vendor/dingo/api/src/Http/Response/Factory.php」, 「級」: 「的Symfony \元器件\ HttpKernel \異常\ HttpException」 ,

路線:

$api = app('Dingo\Api\Routing\Router'); 
$api->version('v1', function ($api) { 
$api->post('auth/signup', 'App\Api\V1\Controllers\[email protected]'); 

請問有什麼需要禁用允許用戶登錄了或沒有電子郵件?

+0

只是出於好奇,如何將用戶登錄時,如果他們沒有電子郵件?基本上你怎麼計劃在註冊過程之後對它們進行修改? – kyle

+0

我已經創建一個登錄方法與@kyle – leo0019

+1

你SignupController電話號碼不同於https://github.com/francescomalatesta/laravel-api-boilerplate-jwt/blob/master/app/Api/V1/Controllers/ SignUpController.php –

回答

1

如果你想使電子郵件作爲可選字段,只需要使用sometimes|emailDocs。嘗試下面的代碼:

public function signup(Request $request) 
{ 
    $credentials = $request->all(); 
    $validator = Validator::make($credentials, [ 
     'name' => 'required', 
     'email' => 'sometimes|email', 
     'password' => 'required|min:6|confirmed', 
     'password_confirmation' => 'required|min:3' 
    ]); 
    if ($validator->fails()) { 
     throw new ValidationHttpException($validator->errors()->all()); 
    } 
    try { 
     $user = $this->users->create($request->except('roles', 'permissions')); 
     if (!$user->id) { 
      return $this->response->error('could_not_create_user', 500); 
     } 

     $hasToReleaseToken = Config::get('boilerplate.signup_token_release'); 
     if ($hasToReleaseToken) { 
      return $this->login($request); 

     } 

     return $this->response->created(); 
    } catch (\Exception $e) { 
     return $this->response->error($e->getMessage(), 500); 
    } 

} 

配置,boilerplate.php

​​