Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Eduiagami

[Resolvido] Editar registro

Recommended Posts

Olá pessoal,

To com um problema aki,

quando eu entro na pagina para editar um registro ta tudo ok, mas quando eu clico no botao para alterar o registro

vem o warning pedindo um argumento, istu está certo??

vou postar meu controller e view:

 

CONTROLLER:::

 

function perfil_editar($idc){
	$id_curso = (int)$idc;
	$this->layout = "admin";
	$this->pageTitle = "Editar Curso";
	
	$id = $this->Auth->user('id');
	if($id==NULL){
		$this->redirect(array('controller'=>'admin','action'=>'login','perfil'=>false));
	}
	//seta dados para layout
	$tipos = $this->Tipo->find('list',array('conditions'=>array('Tipo.ativo'=>'s'),'fields'=>array('Tipo.id','Tipo.nome')));
	$categorias = $this->Categoria->find('list',array('conditions'=>array('Categoria.ativo'=>'s'),'fields'=>array('Categoria.id','Categoria.nome')));
	$modalidades = $this->Modalidade->find('list',array('conditions'=>array('Modalidade.ativo'=>'s'),'fields'=>array('Modalidade.id','Modalidade.nome')));
	$filiais = $this->Filial->find('list',array('conditions'=>array('Filial.anunciante_id'=>$this->Auth->user('id'),'Filial.ativo'=>'s'),'fields'=>array('Filial.id','Filial.nome')));
	
	$this->set('tipos',$tipos);
	$this->set('modalidades',$modalidades);
	$this->set('categorias',$categorias);
	$this->set('filiais',$filiais);
	
//cadastro
	if(empty($this->data)){
		//retiro associacao para reduzir query
		$this->Curso->unbindModel(
        	array('belongsTo' => array('Anunciante'))
    	);
		$this->Curso->unbindModel(
        	array('hasMany' => array('Prematricula'))
    	);
		
		
		$this->data = $this->Curso->read(array('Curso.anunciante_id','Curso.tipo_id','Curso.categoria_id','Curso.subcategoria_id','Curso.modalidade_id','Curso.nivel_curso','Curso.periodo','Curso.titulo','Curso.resumo','Curso.descricao','Curso.objetivo','Curso.metodologia','Curso.pre-requisitos','Curso.vantagens','Curso.periodo','Curso.carga_horaria','Curso.carga_horaria','Curso.gratis','Curso.investimento','Curso.local_aula','Curso.informacoes','Curso.link_site','Curso.ativo'),$idc);
	}else{
		
		$this->Curso->id = $id_curso;
		$this->data['Curso']['anunciante_id'] = $this->Auth->user('id');
		
		if($this->Curso->saveAll($this->data)){
			$this->Session->setflash('Curso editado com sucesso!');
		}else{
			$this->Session->setFlash('Falha ao editar o curso, verifique os campos!');
		}
	}
	
}

 

VIEW::::

 


<?
echo $html->css('formularios.css');
?>

<script>
$('#abas li a:first').addClass("selected"); //seleciono aba de cursos

function showHideInv(){
	if(document.getElementById('CursoGratis').checked==true){
		document.getElementById('CursoInvestimento').disabled=true;
	}else{
		document.getElementById('CursoInvestimento').disabled=false;


	}
}
</script>

<div class="formulario">
<h1>Alteracao de cursos</h1>
<p>Altere os dados de seu curso de forma sábia, forneca o maior numero de informações possiveis ao usuario para ele ter certeza que seu curso é o que ele procura!</p><br />
<?=$session->flash();?>
<h2>Alteracao</h2>
<p>Campos com (*) sao obrigatorios</p>
<span class="line_cad"></span>

<?=$form->create('Curso',array('action'=>'perfil_editar'));?>
<?=$this->data['Curso']['id'];?>
<span style="width:627px; display:table; padding:3px; background-color:#f2f2f2;">
<p>Escolha em qual(is) filial(is) este curso tambem esta presente</p>
<?=$form->input('Filial.id',array('type'=>'select','label'=>'','multiple'=>'checkbox','options'=>$filiais));?>
</span>

<?=$form->input('tipo_id',array('type'=>'select','options'=>$tipos,'after'=>'*')); ?>
<?=$form->input('categoria_id',array('type'=>'select','options'=>$categorias,'after'=>'*')); ?>

<? //$form->input('subcategoria_id',array('type'=>'select')); ?>
<?=$form->input('modalidade_id',array('type'=>'select','options'=>$modalidades,'after'=>'*')); ?>

<? $options_nivel = array('b'=>'Basico','m'=>'Medio','a'=>'Avancado','i'=>'Indiferente');?>
<?=$form->input('nivel_curso',array('type'=>'select','options'=>$options_nivel,'after'=>'*')); ?>

<? $options_periodo = array('m'=>'Manha','t'=>'Tarde','n'=>'Noite','f'=>'Flexivel');?>
<?=$form->input('periodo',array('type'=>'select','options'=>$options_periodo,'after'=>'*')); ?>
<?=$form->input('carga_horaria',array('type'=>'text','size'=>'10','after'=>' horas *')); ?>

<!-- Dados do curso -->
<?=$form->input('titulo',array('type'=>'text','size'=>'60','after'=>'*'));?>
<?=$form->input('resumo',array('type'=>'textarea','after'=>'*'));?><br />
<?=$form->input('descricao',array('type'=>'textarea'));?>
<?=$form->input('objetivo',array('type'=>'textarea'));?>
<?=$form->input('metodologia',array('type'=>'textarea'));?>
<?=$form->input('pre-requisitos',array('type'=>'textarea'));?>
<?=$form->input('vantagens',array('type'=>'textarea'));?><br />

<span style="height:1px; display:block; clear:left;  border-bottom:#CCC dashed 1px;"></span>

<span style="width:100%; display:block; padding-left:130px; clear:left;">
Se você esta cadastrando um curso gratis marque abaixo:
<?=$form->input('gratis',array('type'=>'checkbox','value'=>'s','label'=>'Este curso é gratis','onclick'=>'showHideInv();'));?>
</span>
<br />
<span style="height:1px; display:block; clear:left; border-bottom:#CCC dashed 1px;"></span>
<br />

<?=$form->input('investimento',array('type'=>'text')); ?>

<?=$form->input('local_aula',array('type'=>'textarea')); ?>
<?=$form->input('informacoes',array('type'=>'textarea')); ?>
<?=$form->input('link_site',array('type'=>'text')); ?>
<?=$form->input('ativo',array('type'=>'select','options'=>array('s'=>'sim','n'=>'nao'))); ?>

<?=$form->input('alteracao',array('type'=>'hidden','value'=>date('Y-m-d h:m:s'))); ?>

<br />
<br />

<?=$form->end('Efetuar alteracao');?>
</div>

 

Outra duvida, quando eu to tentando cadastrar um relacionamento HABTM pelo que parece a query so cadastra em um model e no outro ela faz um consulta buscando um registro..

alguem sabe

 

Brigadaooooo

To usando o saveAll.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mostre o erro e apenas o código corresponde deste.

Sobre HABTM o cakephp tem um pouco de problemas com ele. Esxiste um behavior chamado "Habtamable behavior", ele ajuda um pouco (você não precisa ficar dando join left etc...), mas como você está utilizando saveAll, ele não tem suporte =/ (por isso estou criando o meu)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mostre o erro e apenas o código corresponde deste.

Sobre HABTM o cakephp tem um pouco de problemas com ele. Esxiste um behavior chamado "Habtamable behavior", ele ajuda um pouco (você não precisa ficar dando join left etc...), mas como você está utilizando saveAll, ele não tem suporte =/ (por isso estou criando o meu)

 

Fala Lucas!!

Tudo bom??

segue abaixo :

 

Warning (2): Missing argument 1 for CursosController::perfil_editar(), called in C:\apache\htdocs\cliquecursos\cake\libs\object.php on line 116 and defined [APP\controllers\cursos_controller.php, line 122]

 

Notice (8): Undefined variable: idc [APP\controllers\cursos_controller.php, line 123]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa. Veja que, como definido na função, a argumento DEVE existir:

function perfil_editar($idc){

Então, a url, deve ser sempre algo como isso:

/painel/cursos/editar/1532

Sempre deve ter aquele ultimo parâmetro. Para torna-lo "opcional":

function perfil_editar($idc = null)
Você define um valor padrão. Depois, basta tratar isso no proprio metodo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa. Veja que, como definido na função, a argumento DEVE existir:

function perfil_editar($idc){

Então, a url, deve ser sempre algo como isso:

/painel/cursos/editar/1532

Sempre deve ter aquele ultimo parâmetro. Para torna-lo "opcional":

function perfil_editar($idc = null)
Você define um valor padrão. Depois, basta tratar isso no proprio metodo

 

 

Pow seria no caso tipo assim:

Tenho um artigo, vou edita-lo, mas esqueço de um campo, ele da erro ai quando eu preencho o campo que esqueci e

clico em alterar ao inves de alterar ele salva.

Como procedo???

No controller e view??

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi a dúvida.

O Cake só irá alterar se você definir o ID:

$this->Model->id = $id;

Quando há um erro de validacao e eu corrijo este erro e clico em alterar, eu nao consigo alterar, ele tentar criar um novo registro.

como se $this->Model->id nao estivesse setado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Debugue e veja oque você poe em id.

pr($idc);
$this->Model->id = $idc
Se você estiver passando um valor nulo será a mesma coisa que não definir o Model::$id...

 

Entao, o valor a falha ainda esta um ID (int), mas se eu apertar novamente em alterar o valor some, ai ao inves de ele alterar ele simplesmente cria um novo registro.

 

abraços

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido

 

solucao

View - $action->create('Curso',array('url'=>array('controller'=>'cursos','action'=>'editar','perfil'=>true,$this->params['pass'][0])));

 

params é referente ao id que esta na url para assim quando submiter o formulario, o controller nao acusar falta de parametro

 

CONTROLLER - Retirar $this->Model->saveAll() e colocar $this->Model->save();

 

abraços

 

Agradecimentos especial ao Lucas_wxp O kra é fera msm!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.