Ir ao conteúdo
  • Cadastre-se

PHP "popup" Modal sempre salvando


Ir à solução Resolvido por Alex SuBxZeRo,

Posts recomendados

Bom dia galera, estou com um probleminha com modal, que é o seguinte, tenho um sistema de controle de nota, que um setor solicita produtos, o outro setor autoriza ou recusa, simples, decidi então criar uma modal para cada opção, para que o usuário não precise acessar a nota para executar o procedimento.

porém a minha modal criada esta realizando o input do dado sempre, clicando em sim, nao, ou fechando a modal, ele executa o procedimento de qualquer forma.

Utilizo o cakephp como framework do sistema, segue os comandos:

 

ctp :


 

<?php

echo $this->Html->script('solicitacao/AddEddSolicitacao');

?>

<div id="modalDados" class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">

<div class="modal-dialog modal-lg">

<div class="modal-content">

<div class="modal-header">

<button type="button" class="close"

data-dismiss="modal">

<span aria-hidden="true">×</span>

<span class="sr-only">Close</span>

</button>

<h4 class="modal-title">

Autorizar

</h4>

</div>

<div class="modal-body">

<div class="row">

<h3 style="margin-left:20px;"> Deseja Autorizar a Solicitação: <?= $this->request->data['id']?> ?</h3>

<div class="col-lg-12"> <!-- ---LOTE/ PRODUTO CRIADO--- -->

<form method="post">

<button class="btn btn-success" type="submit" name="autModal">Sim</button>

<button class="btn btn-primary" type="button" data-dismiss="modal">Não</button>

</form>

</div>

</div>

</div>

</div>

</div>

</div>

 

Segue a controller do cakephp:


 

public function modalAutorizar($id){


if($this->request->is(['put','post'])){


$solicitacao= $this->Solicitacao->find('first',[

'conditions' => ['sol_id' => $id]

]);


$this->Solicitacao->read(null,$id);

$this->Solicitacao->set('sol_situacao', '2');

if($this->Solicitacao->save()){

$this->Session->setFlash('Solicitação Autorizada','default',array('class' => 'alert alert-success'), 'solicitacao');

}else{

$this->Session->setFlash('Ocorreu algum erro, tente novamente mais tarde','default',array('class' => 'alert alert-danger'), 'solicitacao');

}

}


$solicitacao= $this->Solicitacao->find('first',[

'conditions' => ['sol_id' => $id]

]);


$this->request->data['id'] = $solicitacao['Solicitacao']['sol_id'];


}

 

 

OBS: a modal é necessária por que irei colocar um sistema de assinatura nela, a pessoa que vai autorizar devera inserir o usuário e senha, para confirmação, ainda não inseri isso no campo devido ao problema de salvamento.

Link para o comentário
Compartilhar em outros sites

  • Solução

Resolvido:

Resolvi o problema da seguinte forma;

 

CTP :
 

<?php
echo $this->Html->script('solicitacao/AddEddSolicitacao');
?>
<div id="modalDados" class="modal fade bd-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <?=
                $this->Form->create('solicitacao', [
                    'role' => 'form',
                    'method' => 'POST', 
                    'id' => 'modelAut',
                    ])
            ?>
            <div class="modal-header">
                <button type="button" class="close" 
                        data-dismiss="modal">
                    <span aria-hidden="true">&times;</span>
                    <span class="sr-only">Close</span>
                </button>
                <h4 class="modal-title">
                    Autorizar
                </h4>
                <div class="col-sm-2" hidden> 
                    <?= $this->Form->input('opcao',[
                        'type' => 'text',
                        'id' => 'opcao',
                        'name' => 'opcao',
                        'value' => '1',
                        'readonly' => true,
                        ]);
                    ?>
                </div>
            </div>
            <div class="modal-body"> 
                <div class="row">
                    <h3 style="margin-left:20px;">    Deseja Autorizar a Solicitação: <?= $this->request->data['id']?> ?</h3>
                    <div class="col-lg-12"> <!-- ---LOTE/ PRODUTO CRIADO--- -->
                        <button class="btn btn-success" type="submit" id="modSim" value="2">Sim</button>
                        <button class="btn btn-primary" type="button" id="modNao" value="1" data-dismiss="modal">Não</button>
                    </div>
                </div>
            </div>
        <?= $this->Form->end() ?>
        </div>
    </div>
</div>

 

Codigo PHP Controller:

 

 public function modalAutorizar($id){

        if ($this->request->is(['post', 'put'])) {
            
            $solicitacao= $this->Solicitacao->find('first',[
                'conditions' => ['sol_id' => $id]
            ]);
            

            if($this->request->data['opcao']){
                $this->Solicitacao->read(null,$id);
                $this->Solicitacao->saveField('sol_situacao', '2');
                $this->Session->setFlash('Solicitação Autorizada','default',array('class' => 'alert alert-success'), 'solicitacao');
                $this->redirect('index');
            }else{
                
            }
        }
                
        $solicitacao= $this->Solicitacao->find('first',[
            'conditions' => ['sol_id' => $id]
        ]);

        $this->request->data['id'] = $solicitacao['Solicitacao']['sol_id'];

        $this->set(compact('opcao'));

    }

JS :

 

    $('#modSim').click(function(){
        $('#opcao').val($('#modSim').val());
    });

    $('#modNao').click(function(){
        $('#opcao').val($('#modNao').val());
    });

Acredito que tenha feito algo muito trabalhoso, sendo que poderia ser mais simplificado e igualmente eficiente.
Mas funcionou pra mim, então esta bom kkkkkkkkk

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!