1
I’m unable to update a certain field in Cakephp.
When the $this->OrdemServico->saveField(), he simply does not perform.
Code:
class OrdemServico extends AppModel {
    public $name = "OrdemServico";
    public $useTable = "ordens_servico";
    public $belongsTo = array(
        "Cliente" => array(
            "className" => "Cliente",
            "foreignKey" => "id_cliente"
        ),
        "Responsavel" => array(
            "className" => "Usuario",
            "foreignKey" => "responsavel"
        ),
        "Equipamento" => array(
           "className" => "Equipamento",
           "foreignKey" => "equipamento"
        ),
        "ModoEntrega" => array(
           "className" => "ModoEntrega",
           "foreignKey" => "modo_entrega"
        )
    );
}
class OrdemServicoController extends AppController {
     public function cancelar() {
        try {
            $this->layout = "ajax";
            $this->autoLayout = false;
            $data = $this->request->data;
            $id = $data["question"]["parameter"];
            $destino = unserialize($data["question"]["callback"]);
            $this->OrdemServico->id = $id;
            $this->OrdemServico->saveField("OrdemServico.cancelado", true);
            $this->Dialog->alert("A ordem de serviço foi cancelada com sucesso.");
            $this->redirect($destino);
        } catch (Exception $ex) {
            $mensagem = "Ocorreu um erro no sistema ao atualizar a ordem de serviço.";
            $this->Dialog->error($mensagem, $ex->getMessage());
            $this->redirect(array("action" => "index"));
       }
    }
}
Question.ctp
<div id="dialog-question" class="modal-dialog">
    <?php
    echo $this->Form->create(null, array(
        "url" => array(
            "controller" => "ordem_servico",
            "action" => "cancelar"),
        "id" => $form_name,
        "role" => "form"
    ));
    echo $this->Form->hidden("question.parameter");
    echo $this->Form->hidden("question.callback", array("value" => serialize($retorno)));
    ?>
    <div class="modal-content">
        <div class="modal-header" style="cursor: move">
            <button id="btn-question-close" type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
            <h4 class="modal-title"><i class="fa fa-bell"></i>  Sistema de Ordem de Serviço</h4>
        </div>
        <div class="modal-body">
            <p><?= h($message) ?></p>
        </div>
        <div class="modal-footer">
            <button id="btn-cancel-modal" type="button" class="btn btn-danger"><?= $buttons["cancel"] ?></button>
            <button id="btn-default-modal" type="submit" class="btn btn-success"><?= $buttons["ok"] ?></button>
        </div>
    </div>
    <?= $this->Form->end() ?>
I would like to know what is happening, because the system can not update the field at all.
Switch to catch (Pdoexception $ex), otherwise you will never know if the error is in the query
– Williams
I already figured out the origin of the problem. It was the ID that wasn’t being searched for from CTP. Thanks for the help.
– Fábio Valentim
Thanks. I was able to solve the problem. It was the ID that was not being caught when calling the method. But I will remember to put to Pdoexception next time. And thanks for the tip.
– Fábio Valentim