I have a function in my controller that takes an array as input. The value is passed from ajax. At the moment it is not being decoded correctly.
/**
* @Route("/userLogin/{params}", name="userLogin", methods={"POST"})
* @param UserdbRepository $repository
* @param $params
* @return \Symfony\Component\HttpFoundation\Response
*/
public function userLogin(UserdbRepository $repository, $params) {
$email = $params[0];
$pass = $params[1];
print_r($params); // output correct value test@test.com
echo $params[0]; // output t
echo $email; // output t
.... rest of code
}
js:
const array = [ 'email', 'pass' ]
$.ajax({
url: `/userLogin/${array}`,
type: "post",
dataType: 'json'
})
Use Request
component Symfony\Component\HttpFoundation\Request
you can autowire it: public function userLogin(UserdbRepository $repository, Request $request)
Example 1: fetch params from requestBody
:
$email = $request->request->get('email', null);
$email
will be null
if 'email'
parameter not provided in request
don't forget to pass data
property in your ajax request
const requestBody = {
'email': 'asd@example.com',
'pass': '123',
};
$.ajax({
url: `/userLogin/`,
type: "post",
data: requestBody,
});
Note: don't send data in json
format. Also you can remove {params} from your @Route
pattern and $params
argument.
Example 2: fetch 'email'
param from queryString
:
$email = $request->query->get('email', null);
https://symfony.com/doc/current/components/http_foundation.html