Queria entender o DELETE

A tarefa que tenho que fazer aqui NÃO É um delete, mas em termos de interface deve funcionar de maneira idêntica.

Eu devo setar um campo tornando o cadastro inativo, e sendo inativo não deve ser acessível.

Então fui olhar como funcionava o delete e vi este código.

Numa outra página que faz um delete de verdade…




if (isset($model->Cod_Contato_Visita)) {

$this->widget('bootstrap.widgets.TbButton',array(

'type' => 'danger',

'label' => 'Excluir',

'htmlOptions'=>array(

    'onclick'=>'js:var deletar = confirm("Confirmar exclusão?");

	if (deletar) {

	    $.ajax({

		url: "'.Yii::app()->baseUrl.'/contatovisita/delete/'.$model->Cod_Contato_Visita.'",

		type: "POST",

		data: {"id": '.$model->Cod_Contato_Visita.'},

		success: function(data) {

		    if (data === "ok") {

			window.location.replace("'.Yii::app()->baseUrl."/agenda".'");

		    }

		}

	    });

	}',

    )

));

}



Mais especificamente esta linha


url: "'.Yii::app()->baseUrl.'/contatovisita/delete/'.$model->Cod_Contato_Visita.'",

Pelo que entendi, esta linha é pra montar uma URL que irá ser acionada, passando comom parametro a operação DELETE e mais o código do cadastro a ser deletado.

E … não existe a página delete.php

então creio que seja um funcionamento ‘nativo’ do Yii.

Então … precisaria saber como fazer uma operação similar mas que em vez de deletar o registro, apenas faça um Update num campo dele.

Xevious, a linha que contem o Yii::app()->baseUrl aponta para o controller contatovisita e método delete passando uma determinada variável.

Pelo que entendi vc quer simplesmente fazer um Update. Irá usar o msm raciocínio desse exemplo só que mudando o "comportamento". Por exemplo:


url: "'.Yii::app()->baseUrl.'/seuController/update/'.$model->Cod_Contato_Visita.'",

o controller deve ter um método chamado update que irá fazer os tratamentos necessários e chamar o model que irá fazer o UPDATE de fato.

Se você deseja inativar o registro ao invés de excluí-lo, você pode sobrescrever o método delete() do model.