Skip to content

Некорректный пример валидации в контроллере #85

@sholokhov-daniil

Description

@sholokhov-daniil

Ссылка: https://docs.1c-bitrix.ru/pages/framework/validation.html#validaciya-massivov

Описание:
Неверно показан пример взаимодействия с объектом \Bitrix\Main\HttpRequest в классе CreateUserDto. В примере продемонстрировали, что от \Bitrix\Main\HttpRequest можно вызвать метод getRequest, но по факту он отсутствует.

Пример из документации

use Bitrix\Main\HttpRequest;
use Bitrix\Main\Validation\Rule\NotEmpty;
use Bitrix\Main\Validation\Rule\PhoneOrEmail;

final class CreateUserDto
{
    public function __construct(
        #[PhoneOrEmail]
        public ?string $login = null,
        
        #[NotEmpty]
        public ?string $password = null,
        
        #[NotEmpty]
        public ?string $passwordRepeat = null,
    )
    {}
    
    public static function createFromRequest(\Bitrix\Main\HttpRequest $request): self
    {
        // У $request НЕТ МЕТОДА getRequest()
        return new static(
            login: (string)$request->getRequest()->get('login'),
            password: (string)$request->getRequest()->get('password'),
            passwordRepeat: (string)$request->getRequest()->get('passwordRepeat'),
        );
    }
}

Измененный пример

use Bitrix\Main\HttpRequest;
use Bitrix\Main\Validation\Rule\NotEmpty;
use Bitrix\Main\Validation\Rule\PhoneOrEmail;

final class CreateUserDto
{
    public function __construct(
        #[PhoneOrEmail]
        public ?string $login = null,
        
        #[NotEmpty]
        public ?string $password = null,
        
        #[NotEmpty]
        public ?string $passwordRepeat = null,
    )
    {}
    
    public static function createFromRequest(HttpRequest $request): self
    {
        return new static(
            login: (string)$request->get('login'),
            password: (string)$request->get('password'),
            passwordRepeat: (string)$request->get('passwordRepeat'),
        );
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions