10.1.12 Editando Posts
Edição de Posts: aqui vamos nós. A partir de agora você já é um
profissional do CakePHP, então você deve ter identificado um padrão. Criar a
action e então criar a view. Aqui está como o código da action
edit() do PostsController deve se parecer:
function edit($id = null) {
$this->Post->id = $id;
if (empty($this->data)) {
$this->data = $this->Post->read();
} else {
if ($this->Post->save($this->data)) {
$this->Session->setFlash('Seu post foi atualizado.');
$this->redirect(array('action' => 'index'));
}
}
}
function edit($id = null) {$this->Post->id = $id;if (empty($this->data)) {$this->data = $this->Post->read();} else {if ($this->Post->save($this->data)) {$this->Session->setFlash('Seu post foi atualizado.');$this->redirect(array('action' => 'index'));}}}
Esta action primeiro verifica os dados submetidos do formulário. Se nada tiver sido submetido, ele recupera o Post e o envia para a view. Se algum dado tiver sido submetido, a action tenta salvar os dados usando o model Post (ou manipula-os mostra os erros de validação de volta para o usuário).
A view edit pode ser algo parecido com isto:
/app/views/posts/edit.ctp
<h1>Editar Post</h1>
<?php
echo $form->create('Post', array('action' => 'edit'));
echo $form->input('title');
echo $form->input('body', array('rows' => '3'));
echo $form->input('id', array('type'=>'hidden'));
echo $form->end('Salvar o Post');
?>
/app/views/posts/edit.ctp<h1>Editar Post</h1><?phpecho $form->create('Post', array('action' => 'edit'));echo $form->input('title');echo $form->input('body', array('rows' => '3'));echo $form->input('id', array('type'=>'hidden'));echo $form->end('Salvar o Post');?>
Esta view exibe o formulário de edição (com os valores populados), juntamente com quaisquer mensagens de erro de validação.
Uma coisa a atentar aqui: o CakePHP vai assumir que você está editando um
model se o campo 'id' estiver presente no array de dados. Se nenhum 'id'
estiver presente (como a view add de inserção), o Cake irá assumar que você está
inserindo um novo model quando o método save() for chamado.
Você agora pode atualizar sua view index com os links para editar os posts específicos:
/app/views/posts/index.ctp (com links de edição incluídos)
<h1>Posts do Blog</h1>
<p><?php echo $html->link("Add Post", array('action'=>'add')); ?>
<table>
<tr>
<th>Id</th>
<th>Título</th>
<th>Ação</th>
<th>Criado em</th>
</tr>
<!-- Aqui é onde varremos nosso array de $posts, exibindo informações de cada post -->
<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $post['Post']['id']; ?></td>
<td>
<?php echo $html->link($post['Post']['title'],array('action'=>'view', 'id'=>$post['Post']['id']));?>
</td>
<td>
<?php echo $html->link(
'Excluir',
array('action'=>'delete', 'id'=>$post['Post']['id']),
null,
'Deseja realmente excluir?'
)?>
<?php echo $html->link('Editar', array('action'=>'edit', 'id'=>$post['Post']['id']));?>
</td>
<td><?php echo $post['Post']['created']; ?></td>
</tr>
<?php endforeach; ?>
</table>
/app/views/posts/index.ctp (com links de edição incluídos)<h1>Posts do Blog</h1><p><?php echo $html->link("Add Post", array('action'=>'add')); ?><table><tr><th>Id</th><th>Título</th><th>Ação</th><th>Criado em</th></tr><!-- Aqui é onde varremos nosso array de $posts, exibindo informações de cada post --><?php foreach ($posts as $post): ?><tr><td><?php echo $post['Post']['id']; ?></td><td><?php echo $html->link($post['Post']['title'],array('action'=>'view', 'id'=>$post['Post']['id']));?></td><td><?php echo $html->link('Excluir',array('action'=>'delete', 'id'=>$post['Post']['id']),null,'Deseja realmente excluir?')?><?php echo $html->link('Editar', array('action'=>'edit', 'id'=>$post['Post']['id']));?></td><td><?php echo $post['Post']['created']; ?></td></tr><?php endforeach; ?></table>


























