Chamada de função PHP dentro de tag html

11 respostas Resolvido
javascript
W

Pessoal,

dadas as seguintes tags:

<a href="javascript:;" class="btn btn-xs btdoc btn-default" data-key="<?= $value['id_prestador'] ?>" data-toggle="tooltip" data-placement="top" title="Visualizar/Anexar documentos">

O trecho php chama, no framework, através se uma “lupa” a seguinte função:

protected function getDocs() {
   

    global $prestador;
    
    try {
        
       $query = "SELECT ps.c_razao as prestador, A.prestador_tipo_doc_id, A.prestador_tipo_doc_nome, B.prestador_documento_id, 
                COUNT(B.prestador_documento_id) AS qnt 
                FROM prestador_tipo_doc AS A
                LEFT JOIN prestador_documentos AS B ON (A.prestador_tipo_doc_id = B.prestador_tipo_doc_id AND B.id_prestador = $prestador)
                JOIN prestadorservico as ps on ps.id_prestador = $prestador
                WHERE A.status = 1   
                GROUP BY A.prestador_tipo_doc_id
                ORDER BY A.ordem";

        $this->rh->Prestadorservico->setDefault()->setIdPrestador($prestador)->select("c_razao")->getRow();
        $this->nomePrestador = $this->rh->Prestadorservico->getCRazao();
        
        $exec = $this->db->setDefault()->setQuery(QUERY, $query)->execute();
        if (!$exec->isOk()){
            $this->error->set("Houve um erro na montagem da listagem dos DOCs", E_FRAMEWORK_ERROR);
        }
        
        $this->rsDocs = $exec->getArray();

         if (!include_once(ROOT_APP_TEMPLATE . 'admin/prestador/listar_docs.php')) die('Não foi possível incluir ' . ROOT_APP_TEMPLATE . 'admin/prestador/listar_docs.php');
        
    
    } catch (Exception $ex) {
        $this->setValue(0)->error->set(array(1, __METHOD__), E_FRAMEWORK_WARNING, $ex);
        echo $this->getAlertHtml($this->rh->getAllMsgCode(null, "<br/>"));
        // return $this;
        //echo $this->rh->error->getAllMsgCodeJson(array('code' => 0, 'status' => $this->isOk()));
    }
    
}

Eu não consigo compreender em que atributos das tags mencionadas acima essa função é chamada. Si perfeitamente que "<?= $value['id_prestador'] ?> me retorna a query dessa função. Mas eu preciso implementar outra lupa, com uma query diferente e para isso passar outro parâmetro (recuperar a flag 1 ou 2 em uma certa coluna de uma tabela no meu mySQL)

Alterar a query não é o problema. Meu problema é que, por mais que já tenha buscado, nao consigo entender o que essas tags estão chamando. Ao inspecionar no Chrome, vi que há algo relacionado a um JQuery, mas de modo algum localizo isso no código.

11 Respostas

D

Cara, provavelmente é uma ação atribuída a alguma classe pelo jquery.

W

Sim. Pela minha pouca experiência não consigo identificar qual. Uso netbeans e nenhuma dessas classes dentro da tag me da uma pista, algo relacionado ao getDocs

D

Cara, vai precisar debugar isso.

W

Como exatamente eu posso debugar isso ?

D

Abre no browser, F12 e boa sorte.

W

consegui inspeconar e achei esse .btdoc

$(document).on("click", ".btdoc", function () {
        var $this = $(this);
        var key = $this.data("key");
        /*var kids = $this.parents("tr").children();
        var razao = kids.next().next().html();*/
        cria_carregando_modal();
        
        $.post("?class=admin/prestador/gestao", {prestador: key, method: "getDocs"}, function (data) {
            remove_carregando_modal();
            bootDialog(data, 'Lista de Documentos', '', 'info');
        }, 'html');
    });

E criei um semelhante para retornar os documentos dos prestadores de serviço apenas: .btdoc_prestador

$(document).on("click", ".btdoc_prestador", function () {
        var $this = $(this);
        var key2 = $this.data("key2");
        /*var kids = $this.parents("tr").children();
        var razao = kids.next().next().html();*/
        cria_carregando_modal();
        
        $.post("?class=admin/prestador/gestao", {prestador: key2, method: "getDocs_prestador"}, function (data) {
            remove_carregando_modal();
            bootDialog(data, 'Lista de Documentos', '', 'info');
        }, 'html');
    });

Obtive o resultado que esperava, porém com uma formatação muito estranha no modal de saída, além da demora em abrir:

W

Alguma coisa nessas funções ficou “lambança” Cada vez que clico para abrir o modal, na vez seguinte ele abre duas ou mais vezes o mesmo. O mesmo ocorre no que já estava implementado também.

D

Muito estranha mesmo. Isso tá me cheirando css.

Precisa ver onde está demorando, na requisição, no retorno ou na renderização da modal.

W

Creio que a renderização do modal. O interessante é que, assim que carrego a pagina e clico pra chamar o modal, ele demora um pouco mas chama, ainda q bagunçado. Fechando o modal, se eu clicar de novo, ele carrega o mesmo modal duas vezes…

Se clicar uma terceira, serão três modais… e por aí vai.

W
Solucao aceita

rendering

W

Quanto a visualização o problema estava em outro método, o actionExt(), Faltou incluir a o método getDocs_prestador no array de uma variável que verifica se o método seria inserido no frame:

$listMethodsInFrame = array('lista', 'delete', 'getDocs' , 'showDocs', 'subirDocs', 'editarDoc', 'getDadosContrato','saveDadosContrato','getDocs_prestador'); <---- olha o método que estava faltando aqui.
            $this->setDefaultPage('index');
            $this->setMethodInFrame(in_array($this->getMethod(), $listMethodsInFrame) ? 0 : 1);
            $this->setValue(1);
Criado 6 de fevereiro de 2019
Ultima resposta 8 de fev. de 2019
Respostas 11
Participantes 2