symfony3 как установить входные данные с результатом запроса

Что мне нужно, это просто, я могу сделать это с помощью PHP, но я хочу пользователя FormBuilder.
У меня есть это:

    $builder
->add('number',NumberType::class, array(
'label' => 'Number',
'attr' => array(
'readonly' => "readonly")
)
)
->add('year',NumberType::class, array(
'label' => 'Year',
'data' => date('Y'),
'attr' => array(
'readonly' => "readonly")
)
)

И что мне нужно, это искать последние number этого year и добавьте следующий. Если в этом году нет номера, он покажет 1. Возможно ли это?

заранее спасибо

0

Решение

Предполагая, что у вас уже есть результат запроса, вы можете использовать FormType::buildForm $options аргумент для передачи ваших пользовательских данных в форму.

Вам нужно будет определить пользовательские параметры в configurOptions метод для них должен быть принят. Используя setDefaults определенные значения будут установлены, если опция не указана в массиве опций.

class FormType extends \Symfony\Component\Form\AbstractType
{

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
//...
->add('number',NumberType::class, array(
'label' => 'Number',
'data' => $options['number'],
'attr' => array(
'readonly' => "readonly")
)
)
->add('year',NumberType::class, array(
'label' => 'Year',
'data' => $options['year'],
'attr' => array(
'readonly' => "readonly")
)
);
}

public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'year' => date('Y'),
'number' => 1
]);
}

//...

}

Затем в вашем контроллере запустите ваш запрос и передайте пользовательские данные в опции построителя форм.

public function formAction(Request $request)
{
$options = ['year' => date('Y')];
/**
* query data
* @returns integer|null default: 1
*/
$options['number'] = $em->getRepository('app:Entity')->filterYearNumber($options['year']) ?: 1;
$form = $this->createForm(FormType::class, $data, $options);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
//... handle submission
}

return $this->render('form.html.twig', ['form' => $form->createView()]);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]