«Попытка получить свойство не-объекта» из проверки - PullRequest
0 голосов
/ 21 мая 2019

по какой-то причине, которую я не знаю, когда я пытаюсь пройти проверку без запроса и использовать ее, если

public function save(Request $request){
    $request = $request->validate([
        'name' => ['string', 'max:255'],
        'email' => ['string', 'email', 'max:255', 'unique:users'],
    ]);
    if($request->name != null){
        return $request;
    }

    return $request;
}

1 Ответ

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

Вы заменяете тип вашего $request на результат из validate()

Проверка будет обрабатывать то, что вы хотите, поэтому не стоит беспокоиться.Если вы говорите, что переменная name обязательна, она принудительно не будет null или empty;

Итак, просто замените результат на определенную переменную вместо замены $request, выполнив:

    $validationResult = $request->validate([
        'name'  => ['string', 'required', 'max:255'],
        'email' => ['string', 'required', 'email', 'max:255', 'unique:users'],
    ]);

Лучше, чем этот, создать конкретный тип запроса, запустив

php artisan make:request YourRequest`

Ваш новый класс будет готов на app/Http/Requests, где вы можете указать не только свой rules(), как у вас в массиве, как messages(), который вы хотите, чтобы каждый выводил.

Затем все, что вам нужно сделать, это заменить ваш save(Request $request) на save(YourRequest $request), который сработает перед проверкой.он запускает метод, что означает, что в методе контроллера вы можете свободно выполнять логику вместо того, чтобы дважды проверять переменные

Примерами общих rules() в вашем классе будут:

public function rules()
{
    return [
        'email' => 'required|email|unique:users|max:255',
        'name'  => 'required|min:2|max:200',
    ];
}

public function messages()
{
    return [
        'email.required' => 'The email field is required',
        'email.email' => 'The email field needs to be an email type. Ex:. type@gmail.com',
....
    ];
}

Очевидно, настроить правила и сообщения для вашего проекта и симпатии:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...