Ich habe Symfony in Version 2.8.11. Ich erstelle Form mit zwei Tasten und ich möchte nur etwas wie "Wenn Taste 1 angeklickt wird, umleiten zu einer Route, wenn Taste 2 cicked ist, umleiten zu einer anderen Route". In documentation fand ich die Methode namens isClicked(). Das Problem ist, dass ich diese Methode nicht aufrufen kann, weil sie nicht existiert (as seen in attached image). Was könnte das Problem sein?Symfony 2.8 Form Button 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())
);
}
}
Nun, das Problem ist, dass die Methode 'isClicked()' überhaupt nicht existiert. Es ist nicht von IDE automatisch vervollständigt und wenn ich nur in Typ, ich habe folgende Fehlermeldung: 'Hinweis: Nicht definierte Eigenschaft: Symfony \ Component \ Formular \ SubmitButton :: isClicked $ 500 Internal Server Error - ContextErrorException' – Kamil
Es ist tatsächlich arbeiten Wenn ich etwas mache: '$ form = $ this-> createFormBuilder ($ admin) -> hinzufügen ('save', SubmitType :: class, array ('label' => 'Aufgabe erstellen')) -> add ('saveAndAdd', SubmitType :: class, array ('label' => Speichern und Hinzufügen ')) -> getForm(); ' aber in ** AdminController.php **, statt * * AdminIdType.php **. Habe immer noch keine automatische Vervollständigung, egal wie ich Dinge eintippe. Es ist komisch. – Kamil
Oh, das ist dann einfach. Siehe UPD –