2011-01-16

Tips sobre CakePHP 1.3 para trabajar con mas libertad sobre nuestros desarrollos webs.

Tip 1:

Tener un Controller sin tener un Model, pudiendo tener (Controller + Vista) sin modelo.
class PersonasController extends AppController {
var $name = 'Personas';
var $uses = null; //<= Con esto no busca el modelo Persona
....
view raw gistfile1.php hosted with ❤ by GitHub



Tip 2:

Desde un Controller cargar otra vista y cambiar de Layout para que no busque el predeterminada por el controller.

class PersonasController extends AppController {
var $name = 'Personas';
function index() {
$this->layout='layout4'; //views/layouts/layout4.ctp
$this->autoRender = false; //Desactivar para no generar error
$this->render('home'); //view/personas/home.ctp
}
....
view raw gistfile1.php hosted with ❤ by GitHub


Tip3:

Como entrar por una Action y entragar la salida de otro Action desde el controller. Es como un redirect pero internamente en el propio controller, lo bueno de esto es que no cambia la url. Ejemplo si http://dominio.com.ar/controller1/action1/99, va seguir siendo esa misma url para el navegador; pero internamente desde el controllador utilizamos la action2 y la vista action2.ctp
# http://dominio.com.ar/mycontroller1/action1/99
class Mycontroller1Controller extends AppController {
function action1($paran1 = NULL) {
if(is_numeric($paran1) && $paran1 >0){
$this->setAction('action2', NULL, NULL, NULL, $paran1);
}else{
$this->Session->setFlash(__('No existe', true));
$this->redirect('/');
}
}
function action2($paran1 = NULL, $paran2 = NULL, $paran3 = NULL, $paran4 = NULL) {
// ....
}
//...
}


Tip4:

Hacer que CakePHP 1.3 quede configurado desde el app/config/boostrap.php para que no diferencia singural y plurar ya que las reglas para el español del plural y singular no están dentro de cake.

Nota: recomiando poner los nombres de las tablas en plurar eje: paises, provincias, fotos, etc.. y todo va ser siempre plural para los controller y los modelos.
# CODE IN CakePHP 1.3.+ app/config/bootstrap.php
// Reglas para trabajar con CakePHP en español, esto matiene el genero de como esta en la base de datos para las vista y controller
Inflector::rules('singular', array('rules' => array('/^aros$/i' => 'aro', '/^acos$/i' => 'aco', '/^users$/i' => 'user', '/^groups$/i' => 'group', '/^(.*)$/i' => '\1',), 'irregular' => array(), 'uninflected' => array()));
Inflector::rules('plural', array('rules' => array('/^aro$/i' => 'aros', '/^aco$/i' => 'acos', '/^user$/i' => 'users','/^group$/i' => 'groups', '/^(.*)$/i' => '\1',), 'irregular' => array(), 'uninflected' => array()));
// NOTA se recomienda poner el nombre de las tablas en plurar eje: paises, provincias, fotos, etc..
view raw gistfile1.php hosted with ❤ by GitHub

2011-01-15

Class generador de Tree con patron MPTT + PHP + Tutoriales al estilo CakePHP

Clase para crear tree recuperandolo de la base de datos. Al mismo estilo que lo hace CakePHP

Link a la class:
mptt + bd class.zip 

childcount()
getpath()
tree()
generatetreelist()
extends DB class, for queries and execution of SQL (http://slaout.linux62.org/php/index.html)


Cómo convertir esta matriz MPTT en una estructura de árbol en PHP?
Link:
http://es.w3support.net/index.php?db=so&id=823071

SQL para MySQL donde utiliza el patron MPTT para poder genera el Tree
Link:
http://stackoverflow.com/questions/1638137/mptt-modified-preorder-tree-traversal-issue-in-php

Componet para utilizar con el frameword KOHANA para poder generar menus Tree
Link:
http://code.google.com/p/kohana-mptt/wiki/Documentation

Zend Framework extender la clase Zend_Db_Table para crear un menu Tree como CakePHP

Navegando me encontre como podesmos hacer en Zend Framework un menu tipo Tree al mismo estilo que lo hace CakePHP pero extendiendo la class Zend_Db_Table.

Links

Zend Framework hierarchical Zend_Db_Table extension

http://www.webmasterbulletin.net/2008/10/zend-framework-hierachical-zend_db_table-extension/385