Request ajax with Slim

0

I have a form and the following requisition:

        jQuery('#cadastro').submit(function() {
        var dados = jQuery(this).serialize();
        jQuery.ajax({
            type: "POST",
            url: "/cadastrar",
            data: dados,
            beforeSend(xhr) {
                modalOpen();
            },

            success: function(data) {
                modalContent(data);
            }

        });
        return false;
    });

In my index.php where the application is loaded I have:

$app->post('/cadastrar', function(){      });

How do I intercept this $ _POST data in my method within the route register?

    
asked by anonymous 11.03.2018 / 04:09

1 answer

1

The first parameter of the callback function when registering the route, is just the request information.

To capture this information, simply pass a variable to access request and then use the getParsedBody or getParsedBodyParam method, for example:

$app->post('/cadastrar', function($requets) {

    /**
     * Caso você esteja passando um JSON, use "json_decode" para decodificar
     * Caso você steja passando um XML, use o "SimpleXMLElement" para manipular esse dados
     * Caso você esteja passando um padrão "application/x-www-form-urlencoded"
     *      (é quando você utiliza $("form").serialize(), por exemplo)
     *      utilize o parse_str
     */
    var_dump($requets->getParsedBody());

    /**
     * Você também pode capturar apenas um input e caso o input não exista, retorna um valor padrão
     */
    var_dump($requets->getParsedBodyParam("nome-do-campo", "valor-padrao"));

    /**
     * O getBody() método é preferível se o tamanho da solicitação HTTP recebida for
     * desconhecido ou muito grande para a memória disponível.
     */
    var_dump($requets->getBody());

});
    
11.03.2018 / 04:22