vadliator не работает и вернуть 200 ОК - PullRequest
0 голосов
/ 15 мая 2019

пытается проверить его, но кажется, что он не выполняет проверку и возвращает 200 OK.Я не знаю, что происходит с этим.Когда я отлаживаю это, я все еще не могу найти причину, почему это не работает.

правила из класса обслуживания

protected $rules = [
        'username' => 'required|max:20|unique:users',
        'email' => 'required|string|email|max:255|unique:users',
        'password' => 'required',
        // **in Production **
        // 'password' => [
        //     'required',
        //     'min:6',
        //     'regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/',
        //     'confirmed'
        // ],
        /**
         * Three of the five rules. 
         * English uppercase characters (A – Z)
         * English lowercase characters (a – z)
         * Base 10 digits (0 – 9)
         * Non-alphanumeric (For example: !, $, #, or %)
         * Unicode characters
         */

        'first_name' => 'required|string|max:255',
        'last_name' => 'required|string|max:255',
        'phone' => 'required|regex:/^([0-9\s\-\+\(\)]*)$/|min:5',
        'role' => 'required',

    ];

проверка метода из класса обслуживания

    public function validate($user)
    {
        $validator = Validator::make($user, $this->rules);
        $validator->validate();

    }

сохранение метода в контроллере

 public function store(Request $request)
    {
        $validate = $this->userService->validate($request->all());

        if ($validate->fails()) {

            return response()->json(['message' => $validate->failed()], 400);
        } else {
            try {
                $user = $this->userService->createUser($request);
                return response()->json($user, 201);
            } catch (Exception $e) {
                return response()->json(['message' => $e->getMessage()], 500);
            }
        }
    }

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Вы не должны проверять свой запрос в классе обслуживания, а должны использовать Запрос пользовательской формы Larvel , который позволяет просто указать правила, он обработает сбойный сценарий (Возврат вашего браузера и настройка $errors переменная в шаблоне или отправка правильного ответа JSON).

В основном у вас будет

public function store(CreateUserRequest $request)
{
    // if you reach here, validation passed.
    try {
        $user = $this->userService->createUser($request);
        return response()->json($user, 201);
    } catch (Exception $e) {
        return response()->json(['message' => $e->getMessage()], 500);
    }
}
0 голосов
/ 15 мая 2019

Как насчет изменения метода validate() в вашем классе обслуживания, чтобы он возвращал что-то, например:

public function validate($user)
{
    $validator = Validator::make($user, $this->rules);

    if ($validator->fails()) {
        /* Here you can also return something like 
            return redirect('yourView')
            ->withErrors($validator)
            ->withInput();
        */
        // Or you can simply
        return false;
    }

    return true;
}

И тогда в контроллере вы можете проверить это как:

$validate = $this->userService->validate($request->all());

if ($validate)
{
    // Validation was successfull
} else {
    // Validation was not successfull
}
...