24 de Abril de 2007 às 10:08
· Categorias: CakePHP
Um dos grandes problemas quando se está começando com CakePHP é ele trabalhar com o mod_rewrite do htaccess do apache. Sendo assim em outros servidores, ele não funcionaria.
Para contornar isso, pode-se usar o acesso direto ao arquivo que dispara todas as ações no Cake.
Por exemplo, para acessar: http://localhost/cake/posts/ seria acessado: http://localhost/cake/index.php?url=/posts/
ou http://localhost/cake/posts/ler/1 seria acessado como: http://localhost/cake/index.php?url=/posts/ler/1
Até a próxima pessoal! Dúvidas? Comentem!
Link Permanente
19 de Abril de 2007 às 19:23
· Categorias: CakePHP
Provavelmente, você já deve ter pensando em fazer um cadastro de alguma informação, onde, de uma vez só cadastrasse informações sobre dois Models.
Uma maneira rápida seria:
PHP:
-
if($this->Model1->save($this->data)&&$this->Model2->save($this->data)) {
-
$this->flash('Dados salvos.', '/');
-
}
Esta solução até que funciona bem. Caso não tenhamos relação entre os Models. Ou seja, seria bem improvável que os mesmos seriam salvos em um mesmo lugar sem ter nenhuma relação. Se percebemos bem ainda teremos outro problema, caso desejamos validar os dados dos dois Models antes de salvar qualquer um deles. Já que nesse caso, se o Model1 for salvo, já é inserido os dados no banco, mesmo que o save do Model2 falhe.
Uma alternativa interessante seria:
PHP:
-
$v1 = $this->Model1->validates($this->data);
-
-
$v2 = $this->Model2->validates($this->data);
-
-
if($v1&&$v2) {
-
-
$this->Model1->save($this->data);
-
-
$this->data["Model2"]["model1_id"] = $this->Model1->getLastInsertId();
-
-
$this->Model2->save($this->data);
-
-
$this->flash('Dados salvos.', '/');
-
}
Assim, primeiro validamos os dois models, e somente se passar pelas duas validações, inserimos os dados no banco. Mantendo assim a consistência dos dados. PoderÃamos também já pegar a chave estrangeira e colocar no outro model, com getLastInsertId.
Podemos usar tranqüilamente o tagErrorMsg no view, que ele irá funcionar, pois o validates se encarregará disso.
Abraços pessoal e até a próxima. Dúvidas? Comentem!
Link Permanente
8 de Abril de 2007 às 21:51
· Categorias: CakePHP
Olá pessoal,
desculpem a demora, mas finalmente consegui fazer mais um vÃdeo tutorial.
Neste vÃdeo tutorial, continuaremos com a parte administrativa do blog, agora com a criação de um novo post e a integração do TinyMCE.
Os links usados no blog são:
Using TinyMCE with CakePHP (http://bakery.cakephp.org/articles/view/60) (site com o código do element criado no vÃdeo tutorial)
TinyMCE (site oficial) (site onde deve-se baixar o TinyMCE usado no vÃdeo)
Para simplificar, caso você não queira ir a padaria para pegar o código do element, aqui vai ele:
PHP:
-
link("tinymce/jscripts/tiny_mce/tiny_mce.js"));
-
?>
-
<script type="text/javascript" language="javascript">
-
<?php if($preset = "basic")
-
{
-
$options = '
-
mode : "textareas",
-
theme : "advanced",
-
theme_advanced_buttons1 : "bold,italic,underline,separator,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink",
-
theme_advanced_buttons2 : "",
-
theme_advanced_buttons3 : "",
-
theme_advanced_toolbar_location : "top",
-
theme_advanced_toolbar_align : "left",
-
theme_advanced_path_location : "bottom",
-
extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
-
content_css : "/css/'.$this->layout.'.css"
-
';
-
}
-
?>
-
-
tinyMCE.init
({<?php echo($options);
?>});
-
</script>
E para usá-lo:
PHP:
-
renderElement
('tinymce',
array('preset' =>
'basic'));
?>
Assista agora!
Dúvidas? Comentem!
Abraços, e até a próxima.
Link Permanente