Estoy intentando que el correo electrónico sea opcional cuando el usuario se registra. Aquí está paquete. Entonces eliminé email' => 'required|email|unique:users', en esta función:

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);
    }

}

Luego en config-boilerplate.php también eliminé el correo electrónico:

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

Pero cuando me registro, aparece este error:

"mensaje": "Índice no definido: correo electrónico", "código_de_estado": 500, "depuración": {"línea": 173, "archivo": "/Users/MyMac/Desktop/Project/laravel-5.3-boilerplate-api- jwt-vue2 / vendor / dingo / api / src / Http / Response / Factory.php "," class ":" Symfony \ Component \ HttpKernel \ Exception \ HttpException ",

La ruta:

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

¿Hay algo que deba deshabilitar para permitir que los usuarios se registren con o sin correo electrónico?

1
AlmoDev 4 ene. 2017 a las 00:44
Solo por curiosidad, ¿cómo iniciarán sesión los usuarios si no tienen un correo electrónico? Básicamente, ¿cómo planeas autorizarlos después del proceso de registro?
 – 
kyle
4 ene. 2017 a las 00:53
Ya he creado un método de inicio de sesión con un número de teléfono @kyle
 – 
AlmoDev
4 ene. 2017 a las 00:58
1
 – 
Antonio Carlos Ribeiro
4 ene. 2017 a las 01:48
 – 
AlmoDev
4 ene. 2017 a las 01:51

1 respuesta

La mejor respuesta

Si desea que el correo electrónico sea un campo opcional, simplemente use sometimes|email Consulte Docs. Pruebe el siguiente código:

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);
    }

}

config-boilerplate.php

'signup_fields_rules' => [
    'name' => 'required',  
    'email' => 'sometimes|email',///// this
    'password' => 'required|min:6'
],
1
AddWeb Solution Pvt Ltd 4 ene. 2017 a las 09:49