How to load an HTML file inside a DIV in zend-framework3

0

I'm working on an email marketing tool and need to load an HTML template inside a DIV in the view. I'm using zend-framework3. I tried to use the .load () function, but it is giving 500 error. Can anyone help me ??

I'm using the following function:

$('#carregaTemplate').click(function(){

    var qtdProdutos = $('#qtdProdutos').val();

    $(function(){
        if( qtdProdutos == 1 ) {
            $('#arquivoHtml').load('templates/sem_produtos.html');
        }
        if( qtdProdutos == 2 ) {
            $('#arquivoHtml').load('templates/dois_produtos.html');
        }
        if( qtdProdutos == 3 ) {
            $('#arquivoHtml').load('templates/tres_produtos.html');
        }
        if( qtdProdutos == 4 ) {
            $('#arquivoHtml').load('templates/quatro_produtos.html');
        }
    });
});
    
asked by anonymous 16.11.2018 / 12:23

1 answer

0

After much research and the contribution of dear friends here in the stack, I was able to solve the problem in the following way:

-create a Regex-type route. This type of route allows you to render static pages. See example here: link

-In the controller, I created the following function responsible for rendering the page:

public function docAction() {
    $pageTemplate = 'email-marketing/template/doc' . $this->params()->fromRoute('page', 'documentation.phtml');

    $filePath = __DIR__ . '/../../view/' . $pageTemplate . '.phtml';        
    if (!file_exists($filePath) || !is_readable($filePath)) {
        $this->getResponse()->setStatusCode(404);
        return;
    }

    $viewModel = new ViewModel([
        'page'=>$pageTemplate
    ]);

    $viewModel->setTemplate($pageTemplate);

    return $viewModel;
}

Finally, the function that loads the page inside a DIV, in my case, looks like this:

function loadsTemplate () {

    var qtdProdutos = $('#qtdProdutos').val();

    if( qtdProdutos == 1 ) {
        $('#arquivoHtml').load( "<?= $this->url('doc', ['page' => 'pagina']) ?>", function( response, status, xhr ){
            if( status == "error" ) {
                var msg = "Desculpe, ocorreu um erro: ";
                $('#arquivoHtml').html( msg + xhr.status + " " + xhr.statusText );
            }
        });
    }
    if( qtdProdutos == 2 ) {
        $('#arquivoHtml').load( "<?= $this->url('doc', ['page' => 'dois_produtos']) ?>", function( response, status, xhr ){
            if( status == "error" ) {
                var msg = "Desculpe, ocorreu um erro: ";
                $('#arquivoHtml').html( msg + xhr.status + " " + xhr.statusText );
            }
        });
    }
    if( qtdProdutos == 3 ) {
        $('#arquivoHtml').load( "<?= $this->url('doc', ['page' => 'tres_produtos']) ?>", function( response, status, xhr ){
            if( status == "error" ) {
                var msg = "Desculpe, ocorreu um erro: ";
                $('#arquivoHtml').html( msg + xhr.status + " " + xhr.statusText );
            }
        });
    }
    if( qtdProdutos == 4 ) {
        $('#arquivoHtml').load( "<?= $this->url('doc', ['page' => 'quatro_produtos']) ?>", function( response, status, xhr ){
            if( status == "error" ) {
                var msg = "Desculpe, ocorreu um erro: ";
                $('#arquivoHtml').html( msg + xhr.status + " " + xhr.statusText );
            }
        });
    }

}
    
23.11.2018 / 13:32