Как проверить наличие обязательных полей в объекте? - PullRequest
0 голосов
/ 10 июня 2018

У меня есть пример объекта с полями

name => John
surname => Dow
job => engineer

и форма вывода с заполнителями.некоторые требуются, некоторые нет.

Какова наилучшая практика для проверки, требовала ли она, и показывает ошибку с пустыми полями?

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Существует несколько способов сделать это внутри метода контроллера или использовать для меня классы запросов Laravels. Я предпочитаю использовать классы запросов

. Посмотрите ниже. Я приведу два примера

* 1004.*

Проверка внутри метода контроллера

public function test(Request $request){
    if($request->filled('name){
         /*filled will check that name is set on the current 
           request and not empty*/

         //Do your logic here 
    }
}

Второй способ - использование фасада Validator внутри вашего контроллера

use Validator;

class TestController{
     public function test(Request $request){
       $validator = Validator::make($request->all(), [
         'title' => 'required|unique:posts|max:255',
         'body' => 'required',
       ]);

      /*continue with your logic here if the request failed on 
        validator test Laravel will automatically redirect back 
        with errors*/
     }
}

Третий способ, мой любимый лично

. Вы можете сгенерировать класс Request с помощью этой команды

php artisan make:request AddBookRequest

, которая сгенерирует класс запроса в «app / Http / Requests / AddBookRequest»,внутри любого сгенерированного класса запроса вы найдете два метода authorize () и rules ()

. В авторизованном методе вы должны вернуть значение true или false, которое будет обнаружено, если текущий пользователь делаетзапрос имеет разрешение на запуск этого запроса в методе правил, который вы выполняете почти так же, как во втором способе проверки, проверьте пример

    public function authorize(){
         return true;
    }

    public function rules(){
        return [
            'title' => 'required|string',
            'author_id' => 'required|integer'
        ];
    }

тогда просто в вашем контроллере вы можете использовать сгенерированный запрос следующим образом:

    use App\Http\Requests\AddBookRequest;

    public function store(AddBookRequest $request){
        /* do your logic here since we uses a request class if it fails 
        then redirect back with errors will be automatically returned*/
    }

Надеюсь, это поможет вам узнать больше о проверке в https://laravel.com/docs/5.6/validation

0 голосов
/ 10 июня 2018

Я думаю, что "просто - лучшее", просто через объект и проверьте, существуют ли свойства

Ссылка: property_exists

Пример:

if (property_exists($object, 'name')) {
     //...do something for exists property 
} else {
     //...else
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...