symfony noob here.
Im not sure what this autowiring error is about.
I am trying to check if a button is clicked (maybe there is a better way to do this)
Like so(see first if)
if ($button->get('submit')) { $parameters = []; $clientId = $request->get('client_id'); $clientSecret = $request->get('client_secret'); $playlistId = $request->get('playlist_id'); if ($clientId && $clientSecret && $playlistId) { $parameters['client_id'] = $playlistId; $parameters['client_secret'] = $clientSecret; $parameters['playlist_id'] = $playlistId; } Validator::validateArrayKeys($parameters); }
This is my whole class, am i referencing something wrong here ? Or is there another way to check if a form has been submitted (I dont have a database)
/** * @Route("/", name="app_index") */ public function index(Request $request, SubmitButton $button) { $this->getParameters($request, $button); return $this->render('home/index.html.twig', [ 'controller_name' => 'HomeController', ]); } public function getParameters(Request $request, SubmitButton $button) { $submitButton = $button->get('submit'); dd($submitButton); if ($button->get('submit')) { $parameters = []; $clientId = $request->get('client_id'); $clientSecret = $request->get('client_secret'); $playlistId = $request->get('playlist_id'); if ($clientId && $clientSecret && $playlistId) { $parameters['client_id'] = $playlistId; $parameters['client_secret'] = $clientSecret; $parameters['playlist_id'] = $playlistId; } Validator::validateArrayKeys($parameters); } }
Advertisement
Answer
The problem is here:
public function index(Request $request, SubmitButton $button)
Symfony can not infer what $button
is. If you have a corresponding form then you should instantiate that form, handle the request and then you can check if the button was clicked, roughly like this:
public function index(Request $request) { $form = $this->createForm(MyFormType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { if ($form->get('submit')->isClicked()) { // ... } else { // ... } } return $this->render('my_template.html.twig', ['form' => $form->createView()]); }
Understandably that is a bit much if all you want to do is check if a button was clicked and you don’t want to build a whole form around this. For this you can just access the submitted data from the request without having to resort to any form class whatsover:
public function index(Request $request) { $isClicked = $request->request->get('submit'); // ... }
Instead of $request->request
this can be $request->query
if you submitted the value using GET-method, rather than post.
See also: