Reputation: 261
I am creating eisenhover matrix and I want a button to refresh a data in grid, but I have no idea how to pass parameters/variables with ajax.
/**
* @Route("/articles/list", name="articles_list")
*/
public function showArticlesAction(bool $important = false, bool $urgent = false){
$articles = $this->returnAllArticles();
return $this->render(
'articles/list.html.twig',
array('articles' => $articles,
'important' => $important,
'urgent' => $urgent)
);
}
and script
function refreshFunctionName()
{
$.ajax({
type: "POST",
url: "{{ path('articles_list') }}",
data: {'important': true, 'urgent': true},
cache: false,
success: function(data){
$('#list').html(data);
},
error: function(){},
complete: function(){}
});
}
the showArticlesAction always takes default data if I try to use it with ajax, works fine with:
{{ render(controller(
'AppBundle:Articles:showArticles',
{ 'important': true,
'urgent': true}
)) }}
Upvotes: 0
Views: 82
Reputation: 1223
You need to define those parameters in the Route definition:
/**
* @Route("/articles/list/{important}/{urgent}", name="articles_list")
*/
and you GET method in AJAX call or get those parameters from POST table
/**
* @Route("/articles/list", name="articles_list")
*/
public function showArticlesAction(Request $request){
$articles = $this->returnAllArticles();
$important = $request->request->get('important');
$urgent = $request->request->get('urgent');
return $this->render(
'articles/list.html.twig',
array('articles' => $articles,
'important' => $important,
'urgent' => $urgent)
);
}
Upvotes: 1