Symfony - пакет данных - PullRequest
0 голосов
/ 05 июня 2018

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

 public function userAddAction()
{

    $this->requirePostParams(['username', 'usernameCanonical', 'email', 'emailCanonical', 'password', 'firstName', 'lastName', 'birthDay',
                              'addressOne', 'addressTwo', 'city', 'country', 'postCode', 'mobile', 'about']);

    $this->get('user')->addNewUser($this->data['username'], $this->data['usernameCanonical'], $this->data['email'],
                                             $this->data['password'], $this->data['emailCanonical'], $this->data['firstName'],
                                             $this->data['lastName'], $this->data['birthDay'],  $this->data['addressOne'],
                                             $this->data['addressTwo'], $this->data['city'], $this->data['country'], $this->data['postCode'],
                                             $this->data['mobile'], $this->data['about']);

    return $this->success();
}

protected function requirePostParams($params)
{
    $currentRequest = $this->get('request_stack')->getCurrentRequest();

    $postData = $currentRequest->request->all();

    $postContent = json_decode($currentRequest->getContent(), true);

    if (!empty($postContent)) {
        $postData = $postContent;
    }

    $this->data = $postData;

    $missingParams = [];

    foreach ($params as $param) {
        if (!array_key_exists($param, $postData)) {
            $missingParams[] = $param;
        }
    }

    if (!empty($missingParams)) {
        $this->terminateWithResponse($this->jsonError(sprintf("Missing params: %s", join(', ', $missingParams))));
    }
}

Теперь я хочу упаковать все $ this-> data .... в один вызовуменьшите все поля, которые мне нужно набрать ..

1 Ответ

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

Вы должны быть в состоянии использовать Symfony Forms здесь.

Обычно вам нужно просто вызвать что-то подобное:

$form = $this->createForm(UserType::class);
$form->handleRequest($request);

Но, как я понимаю, у вас естьСтрока JSON в вашем запросе.Поэтому вместо handleRequest после настройки $this->data вам нужно вызвать $form->submit($this->data);

. Вы можете взглянуть на этот метод HttpFoundationRequestHandler :: handleRequest ипоможет вам лучше понять, как формы работают с запросом.

...