Утвердить конкретное правило - Laravel - PullRequest
0 голосов
/ 21 апреля 2019

Я использую последнюю Laravel версию.

У меня есть requests/StoreUser.php:

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

для создания пользователя.

Теперь мне нужно и обновитьпользователь, но как я могу выполнить только определенные правила?

Например, если не указан name, а только email, как я могу запустить проверку только для электронной почты?

Ответы [ 3 ]

2 голосов
/ 21 апреля 2019

Это проще, чем вы думали.Сделать правила зависят от метода HTTP.Вот мой рабочий пример.

public function rules() {
    // rules for updating record
    if ($this->method() == 'PATCH') {
        return [
            'name' => 'nullable||max:255|min:2', // either nullable or remove this line is ok
            'email' => 'required|unique:users|email',
        ];
    } else {
    // rules for creating record
        return [
            'name' => 'required||max:255|min:2',
            'email' => 'required|unique:users|email',
            'password' => 'required|max:255|min:6|confirmed'
        ];
    }

}
1 голос
/ 21 апреля 2019

Любой запрос HttpValidation в laravel расширяет FormRequest, что расширяет Request, поэтому у вас всегда есть возможность проверить запрос, аутентификацию, сессию и т. Д. *

Таким образом, вы можете внутри правил проверить функцию типа запроса

class AnyRequest extends FormRequest
{
    public function rules()
    {
        if ($this->method() == 'PUT'){
            return [

            ]
        }
        if ($this->method() == 'PATH') {
            return [

            ]
        }
    }
}

Если все усложняется, вы можете создать специальный новый запрос HttpValidation PostRequest PatchRequest

class UserController extends Controller
{
    public function create(CreateRequest $request)
    {

    }

    public function update(UpdateRequest $request)
    {

    }
}

См. Также документы Laravel:

1 голос
/ 21 апреля 2019

Вы можете разделить запрос StoreUser на CreateUserRequest и UpdateUserRequest, чтобы применить различные правила проверки.Я думаю, это разделение делает ваш код более читабельным и понятным.

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