shaelex
shaelex

Reputation: 261

Symfony/PHP7, passing parameters with AJAX

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

Answers (1)

Tom
Tom

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

Related Questions