Symfony - пакет данных

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

 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 .... в один вызов, чтобы уменьшить все поля, которые мне нужно ввести ..

Без информации о $this->requirePostParams() или $this->data мы не сможем вам помочь. Почему вы не используете Symfony Forms?

Stephan Vierkant 05.06.2018 13:51

Что делает requirePostParams? Возможно, вы можете использовать для этого формы Symfony?

Djengobarm 05.06.2018 13:52

В настоящее время я использую Postman для тестирования. Я обновил свой пост. @StephanVIerkent

Филип Стојановић 05.06.2018 13:53

Что вы имеете в виду под словом «стая»? Почему бы вам просто не передать весь массив $this->data функции, которой нужны все эти данные?

Nico Haase 05.06.2018 14:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Здесь у вас должна быть возможность использовать Формы Symfony.

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

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

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

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

Другие вопросы по теме