Trabalhando com Checkbox + Array no CakePHP
Olá, depois de algum tempo sem postar por motivos de FALTA DE TEMPO.
Hoje vou mostrar como é simples trabalhar com checkbox no cakephp para deletar varios registros.
É muito simples, nem preciso ficar explicando muito, basta entender o que é para ser feito.
Bom, vamos la…
Primeiramente, vamos contruir nosso formulario
// Criamos o formulario e demos o nome de NomeFormulario, e na url, vamos apontar para a nossa function.
<?php echo $form->create('NomeFormulario',array('url'=>'deleta_selecionado', "id" => "deleta_selecionado"));?>
<?php foreach($nossoloop as $obj):?>
//Criamos o nosso input checkbox com o name de nomeDoCampo[] e passamos o ID do conteudo dentro dele, ficando como abaixo.
<?php echo $form->input("nomeDoCampo[{$obj[$model]["id"]}]",array("type"=>"checkbox","label" => false, "value"=>$obj[$model]["id"]))?>
<? endforach; ?>
<?php echo $form->end();?>
<?php echo $form->create('NomeFormulario',array('url'=>'deleta_selecionado', "id" => "deleta_selecionado"));?>
<?php foreach($nossoloop as $obj):?>
//Criamos o nosso input checkbox com o name de nomeDoCampo[] e passamos o ID do conteudo dentro dele, ficando como abaixo.
<?php echo $form->input("nomeDoCampo[{$obj[$model]["id"]}]",array("type"=>"checkbox","label" => false, "value"=>$obj[$model]["id"]))?>
<? endforach; ?>
<?php echo $form->end();?>
Agora criaremos a nossa controller, que é simples também.
// o nome da função é o mesmo nome que passamos na URL do form...
// se não for, vai dar erro.
function deleta_selecionado()
{
//No nosso foreach, nós pegamos todo o valor que foi passado no array, que esteja dentro de nosso formulario NomeFormulario.
foreach($this->data["NomeFormulario"] as $value){
//Verificamos se o valor é diferente de 0 para ser deletado.
if($value != 0){
//Chamamos a model com o metodo deletaSelecionado e passamos o valor para ele,
//que no caso é o $value, como no loop fizemos que o $this->data["..."] as $value.
$this->NossaModel->deletaSelecionado($value);
}
}
}
// se não for, vai dar erro.
function deleta_selecionado()
{
//No nosso foreach, nós pegamos todo o valor que foi passado no array, que esteja dentro de nosso formulario NomeFormulario.
foreach($this->data["NomeFormulario"] as $value){
//Verificamos se o valor é diferente de 0 para ser deletado.
if($value != 0){
//Chamamos a model com o metodo deletaSelecionado e passamos o valor para ele,
//que no caso é o $value, como no loop fizemos que o $this->data["..."] as $value.
$this->NossaModel->deletaSelecionado($value);
}
}
}
Agora vamos para a nossa model, que é mais simples do que se imagina.
//criaremos a function com o nome de deletaSelecionado, e passaremos o nosso $value para ela.
function deletaSelecionado($value)
{
// E por ultimo, passaremos o $value para o metodo "delete" que é default do cakephp
return $this->delete($value);
}
function deletaSelecionado($value)
{
// E por ultimo, passaremos o $value para o metodo "delete" que é default do cakephp
return $this->delete($value);
}
Pronto, simples assim.
about 5 months ago
Ótimo post, bem simples e fácil de entender…
Parabéns…
about 5 months ago
Gostaria de deixar claro que ainda assim existe uma forma muito mais clear e fácil.
vc monta o form com o name assim input(”users[]“, array(…))
então no controller que recebe vc faz um simples deleteAll() e na condição colocar id => $this->data["users"]
Espero ter ajudado.
Marcio Trindade