Symfony 2.8 Форма Кнопка isClicked

У меня Symfony в версии 2.8.11. Я создаю форму с двумя кнопками, и я просто хочу сделать что-то вроде «Если нажата кнопка 1, переадресовывается на какой-то маршрут, если кнопка 2 перебивается, перенаправляется на другой маршрут». В документации я нашел метод, называемый isClicked (). Проблема в том, что я не могу назвать такой метод, которого он не существует ( как видно на прилагаемом изображении ). В чем может быть проблема?

AdminIdType.php

<?php // src/AppBundle/Form/AdminIdType.php namespace AppBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\ButtonType; class AdminIdType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('admins', EntityType::class, array('class' => 'AppBundle:Admin', 'choice_label' => 'idAdmina', 'multiple' => true)) ->add('save', ButtonType::class, array('label' => 'Create Post')) ->add('delete', SubmitType::class, array('label' => 'Delete Post')); } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'data_class' => 'AppBundle\Entity\Admin', )); } } 

AdminController.php

 <?php // src/AppBundle/Controller/AdminRegistrationController.php namespace AppBundle\Controller; use AppBundle\Form\AdminType; use AppBundle\Form\AdminIdType; use AppBundle\Entity\Admin; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\ClickableInterface; use Symfony\Component\Form\Extension\Core\Type\ButtonType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; class AdminController extends Controller { /** * @Route("baza/admin/update", name="admin_update") * @param Request $request * @return type */ public function AdminUpdateAction(Request $request) { $admin = new Admin(); $form = $this->createForm(AdminIdType::class, $admin); $form->handleRequest($request); // HERE I WANTED TO // if ($form->get('delete')->isClicked) { // do smth // } return $this->render( 'adminUpdate.html.twig', array('form' => $form->createView()) ); } } 

Функция $form->getForm() обычно возвращает объект, который реализует интерфейс FormInterface – и методы этого интерфейса, которые у вас есть в вашем автозаполнении.

Но некоторые из этих объектов могут иметь дополнительные методы, а \Symfony\Component\Form\SubmitButton реализует FormInterface а также ClickableInterface с помощью метода isClicked

Итак, для вашего $form->get('delete') этот метод будет существовать, но для $form->get('admins') он не будет.

Если вы хотите иметь автозаполнение, вы можете применить метод с аннотацией PHPDoc, который должен поддерживаться вашей IDE:

 /** @var $deleteButton \Symfony\Component\Form\SubmitButton */ $deleteButton = $form->get('delete'); $deleteButton->isClicked(); // now you have autocomplete 

UPD: обратите внимание: if ($form->get('delete')->isClicked()) , а не if ($form->get('delete')->isClicked)