Я написал функцию, в которой передал все параметры для добавления пользователя.
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 .... в один вызов, чтобы уменьшить все поля, которые мне нужно ввести ..
Что делает requirePostParams? Возможно, вы можете использовать для этого формы Symfony?
В настоящее время я использую Postman для тестирования. Я обновил свой пост. @StephanVIerkent
Что вы имеете в виду под словом «стая»? Почему бы вам просто не передать весь массив $this->data функции, которой нужны все эти данные?






Здесь у вас должна быть возможность использовать Формы Symfony.
Обычно нужно просто вызвать что-то вроде этого:
$form = $this->createForm(UserType::class);
$form->handleRequest($request);
Но, насколько я понимаю, в вашем запросе есть строка json. Поэтому вместо handleRequest после настройки $this->data вам нужно вызвать в $form->submit($this->data);.
Вы можете взглянуть на этот метод HttpFoundationRequestHandler :: handleRequest, и он поможет вам лучше понять, как формы на самом деле работают с Request.
Без информации о
$this->requirePostParams()или$this->dataмы не сможем вам помочь. Почему вы не используете Symfony Forms?