Symfony - формы или AJAX - PullRequest
       3

Symfony - формы или AJAX

0 голосов
/ 04 марта 2019

У меня есть 4 сущности, главная сущность называется "Jointure", другие сущности (Skill.php, Level.php, Answer.php) отображаются в ManyToOne в "Jointure".-Skill содержит все возможные навыки выбора.-Уровень содержит все возможные уровни выбора.-Ответ содержит userEmail каждого консультанта.

Я хочу создать страницу поиска с такими критериями, как: enter image description here

Проще: я выбираю навык (Компетенция)Затем я выбираю уровень (Maitrise), а затем нажимаю «Консультант Recherche» и отображаю список со всеми «Answer.userEmail», которые заполняют это.

Как я могу это сделать?Формы с createQueryBuilder с пользовательским Join?Тип объекта ?с AJAX?

Большое спасибо:)

1 Ответ

0 голосов
/ 04 марта 2019

Эй, на вашем месте я бы создал formType с двумя типами сущностей для формы поиска, а затем использовал бы Ajax для результатов.

SearchFormType.php:

 public function buildForm(FormBuilderInterface $builder, array $options){
    $builder->add(
            'skill',
            EntityType::class,
            [
                'class' => Skill::class,
            ]
         )
          ->add(
            'skillLevel',
            EntityType::class,
            [
                'class' => SkillLevel::class,
            ]
        );
    }

Затем используйтеjquery для перехвата отправки и отправки его через Ajax:

app.js:

$('#form').on('submit', (e) => {
    e.preventDefault();
    $.ajax({
        url: $form.attr('action'),
        type: 'POST',
        dataType: 'json',
        data: $form.serialize(),
        success: (response) => {
           //Display results in div       
        }
    })
})

И, наконец, обработайте ответ Ajax в контроллере

Controller.php:

public function search(Request $request){
    if ($request->isXmlHttpRequest()) {
        $search = $this->createForm(SearchFormType::class);
        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {
            $searchData = $form->getData();
            //Do what you want with the data and return a json response with the results
            return new JsonResponse([$results], 200);
        }
    } 
}

Вам нужно будет добавить код, который запрашивает в базе данных результаты и обработку ошибок, чтобы это завершилось.

Возможно, я что-то пропустил, так что если вы попробуете этоподход, и это не работает, не стесняйтесь оставить комментарий, и я буду копать глубже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...