Autor Tema: Propuesta para PHP con CAKEPHP  (Leído 9729 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Propuesta para PHP con CAKEPHP
« : octubre 21, 2006, 11:04:27 am »
Quisiera anotar para estas vacaciones el desarrollar una aplicacioncita de PHP con CAKEPHP para demostrarles un poco de como se utiliza y como nos facilita la vida y compartir el codigo fuente con ustedes y un poco de explicaciones de como se fue formando.

Antes de buscar en que hacer el ejemplo quisiera escuchar algunos comentarios mas o menos de que podria ser util, pues la verdad tendria que ser algo que no maneje tantas entidades porque se haria largo tal vez unas 4 entidades

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Propuesta para PHP con CAKEPHP
« Respuesta #1 : octubre 21, 2006, 11:09:18 am »
Add-ins para el foro?, quedó pendiente lo de programar la votacion por temas.

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Propuesta para PHP con CAKEPHP
« Respuesta #2 : octubre 21, 2006, 11:10:45 am »
Add-ins para el foro?, quedó pendiente lo de programar la votacion por temas.

Si ese va con todo pero eso es puro php no se puede utilizar cake ya que esta de la votacion de temas consiste en editar el software del foro en si  :thumbsup:

Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Re: Propuesta para PHP con CAKEPHP
« Respuesta #3 : octubre 21, 2006, 11:14:38 am »
Pero la idea es que sea para el foro?....

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: Propuesta para PHP con CAKEPHP
« Respuesta #4 : octubre 21, 2006, 11:18:16 am »
Y un portal WAP?
Tipo:
Código: [Seleccionar]
http://www.wap-upload.net/cgi-bin/upload.pl
Es una de las pocas cosas que aún no tenemos a nivel nacional (o al menos no lo he hayado).

Ahorita hay:
-Foros
-Hosting de archivos/fotos
-Blogs
-Clasificados virtuales
-Mensajitos en linea
-Info para celulares
-Paginas de anime


Pero no hay nada para WAP... el espacio no sería mas de 50Mb para almacenamiento, pero no se si eso se posible dentro de tu hosting ó el de alguien (cough cough netss cough) mas.

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Propuesta para PHP con CAKEPHP
« Respuesta #5 : octubre 21, 2006, 05:36:23 pm »
man no es necesario que sea para el foro, me refiero a que queria hacer un ejemplo de cakephp para que vieran lo facil que es usarlo y asi muchos lo tomen en cuenta para sus proyectos.

No tanto asi como un proyecto para ocupar :)

Voy a buscar algo que tenga unas digamos 4 tablas, se me ocurre ahorita algo de toma de ordenes o algo asi que incluya digamos 1 tabla con otra de uno a muchos , otra de muchos a muchos , algo asi  :thumbsup:

Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Re: Propuesta para PHP con CAKEPHP
« Respuesta #6 : enero 30, 2007, 08:45:29 am »
Que ondas Rdoggsv, pues como bien sabes estoy trabajando en un proyecto con php, pero como bien es cierto cuando uno empieza a travesiar un juguete nuevo tiene muchas dudas me gustaria que me hecharas la mano por este medio y asi de paso pues queda para que otros que se animen a probar este framework lo vayan entendiendo, a veces me da un poco de pena molestarte en el gtalk pero si te parece ire planteando mis dudas aqui y cuando tengas chance de irlo revisando me vas echando la mano, para el caso dejo mi primer interrogante:

Fíjate que Instale el cake y configure en el httpd.conf de apache el webroot de cake que se encuentra en /app como mi documentroot, el caso es que abri mi direccion y aparecio el template de cake con todos los colores tal y como me lo indicastes pero esta vez no me listo los links que trae por defecto la vista si no que me empezo a pedir un controlador y un modelo: cake_controller.php y cake.php respectivamente, luego que puse los archivos en las carpetas respectivas me empezo a pedir la tabla que se tenia que llamar 'cakes' y no se por que razon me pide todas esas ondas por que aquel dia me fije que solo lo pusistes y te funciono de maravilla, la cosa es que no se si tengo algun problema con la configuracion o puedo empezar a meterle ya a la programada, de antemano gracias por la respuesta

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Propuesta para PHP con CAKEPHP
« Respuesta #7 : enero 30, 2007, 08:59:46 am »
El documentroot de apache tenes que ponerlo arriba de app , tiene que apuntar a el folder que tiene , el app el cake , el index.php, el .htaccess.

Otra manera que creo que funciona es apuntar el documentroot hacia el webroot que esta adentro de app, pero no se apunta a el folder app, tal vez por eso te esta tirando errores.

Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Re: Propuesta para PHP con CAKEPHP
« Respuesta #8 : enero 30, 2007, 05:02:19 pm »
Vaya man ya me funciono, tengo que anotar aquí que tuve que hacer algunos cambios en el httpd.conf por ejemplo cambiar la parte de DirectoryIndex ya que ahí aparece que te reconozca el index.html se lo cambie a index.php y me corrió tal y como deberia con colores y todo, también ya le halle mas sentido con la ayuda de otro framework que se llama kumbia entendí bien la lógica y ya hice unos formularios sencillos en cake, ahora bien me urge hacer un formulario que escriba en varias tablas como lo anoto a continuación:

Tengo una tabla que guarda datos generales de un cliente como nombre, apellidos, edad, etc, aparte tengo una tabla que guarda los documentos de estos usuarios lo hice separado por que hay clientes que tienen mas de un documento y pues me parece mejor anotar el id del cliente en la tabla de documentos para cuando yo haga una consulta me muestre todos los documentos de ese usuario, pero resulta que el dato del numero de documento se lo pediré en el mismo formulario donde le pido el nombre y los otros datos, por lo tanto aquí se ven involucradas dos tablas en las que se tienen que guardar datos distintos pero amarrados, esa parte se me olvido consultártela aquel día, también me gustaría que explicaras un poco sobre como amarrar un combobox con los datos de un campo de tabla esto para los casos de los paises por ejemplo....

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Propuesta para PHP con CAKEPHP
« Respuesta #9 : enero 30, 2007, 06:50:47 pm »
1) Como cargar en un combo o mejor conocido como select , los valores de 1 campo de una tabla. (Por cierto de esto te llevastes un ejemplo)

Primero la creas con Model->generateList()

Código: [Seleccionar]
http://manual.cakephp.org/chapter/models [Buscate la palabra generateList()]

Eso lo que hace es que te devuelve un arreglo y posteriormente en tu vista con el HtmlHelper ocupas la funcion selectTag

Código: [Seleccionar]
http://api.cakephp.org/class_html_helper.html#dc661e84e1710023d94691fad33f40ec
Por ejemplo


$this
->set('Categories',
    
$this->ClientCategory->generateList(null'descripcion ASC'null'{n}.ClientCategory.id''{n}.ClientCategory.descripcion'));


Devuelve un arreglo y lo guarda en la variable $Categories , que son las categorias disponibles. Y el codigo siguiente te genera el selectbox


<p>Categoria
<?
php echo $html->selectTag('Client/category_id',$Categories,null,array(),null,false); ?>
</p>


2- Lo de guardar un modelo y su modelo hijo se hace así man

Código: [Seleccionar]
http://manual.cakephp.org/chapter/models [Buscate la parte de saving related model data]

En donde primero guardas el padre (en el ejemplo es un post), despues con una funcion getLastInsertId() te devuelve que fue lo ultimo que mandastes a guardar y ese id lo podes ocupar para guardar los hijos (en el ejemplo son comentarios del post).  :thumbsup:

Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Re: Propuesta para PHP con CAKEPHP
« Respuesta #10 : marzo 14, 2007, 10:25:57 am »
Que ondas Rdoggsv, tengo una consulta, fijate que tengo esto en mi sistema:



la cuestion es que en esta vista se guardan varios datos de diferentes tablas relacionadas una de ellas pues es la que guarda los documentos de identidad, la cosa es que el guardado me funciona para uno de los campos en el ejemplo solo me guarda el DUI, pero en esa tabla quiero que se guarden los dos documentos en el caso de que los haya, o sea lo que quiero es que en esa tabla se inserte el numero de DUI y NIT junto al id de la persona, como te digo ahorita me funciona para uno pero no le hayo como hacer para que me inserte los dos registros en esa tabla con el mismo id de persona en el caso de que haya un segundo documento, gracias de antemano

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Propuesta para PHP con CAKEPHP
« Respuesta #11 : marzo 14, 2007, 12:37:58 pm »
Hey noel para ayudarte directamente necesito que me pongas ejemplos de a que corresponde cada cosa, porque ahorita solo me has dicho que pertenecen a diferentes tablas, pero yo entiendo como que los datos de DUI y NIT se guardan cuando estas creando por primera vez una persona.

Tal vez si no se puede que digas directamente las tablas (ya que es algo privado) ponete algunos ejemplos inventados de que estas queriendo hacer.

Citar
If the ID for the post is at $post['Post']['id']

<?php echo $html->hidden('Comment/post_id', array('value' => $post['Post']['id'])); ?>

Done this way, the ID for the parent Post model can be accessed at $this->data['Comment']['post_id'], and is all ready for a simple $this->Post->Comment->save($this->data) call.


Mirate eso que dice ahi que es como decir que por ejemplo ahi estan creando un comentario para un post , entonces conseguis el id del post y lo pones en una variable $post['Post']['id'] y despues cuando vas a guardar el comentario antes de guardar vos creas en el arreglo $this->data una variable en ['Comment']['post_id'] antes de guardar y asi el automaticamente guarda ese valor en la tabla.

Para tu caso seria conseguir el id de la persona y en las tablas que queres guardar suponete que tenes

$this->data['Person']['dui'] y tambien tenes $this->data['Person']['nit'] entonces antes de guardar a la fuerza le pones $this->data['Person']['person_id'] y despues le das $this->Modelo->save($this->data)

Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Re: Propuesta para PHP con CAKEPHP
« Respuesta #12 : marzo 14, 2007, 01:50:43 pm »
Hey noel para ayudarte directamente necesito que me pongas ejemplos de a que corresponde cada cosa, porque ahorita solo me has dicho que pertenecen a diferentes tablas, pero yo entiendo como que los datos de DUI y NIT se guardan cuando estas creando por primera vez una persona.

Tal vez si no se puede que digas directamente las tablas (ya que es algo privado) ponete algunos ejemplos inventados de que estas queriendo hacer.

Citar
If the ID for the post is at $post['Post']['id']

<?php echo $html->hidden('Comment/post_id', array('value' => $post['Post']['id'])); ?>

Done this way, the ID for the parent Post model can be accessed at $this->data['Comment']['post_id'], and is all ready for a simple $this->Post->Comment->save($this->data) call.


Mirate eso que dice ahi que es como decir que por ejemplo ahi estan creando un comentario para un post , entonces conseguis el id del post y lo pones en una variable $post['Post']['id'] y despues cuando vas a guardar el comentario antes de guardar vos creas en el arreglo $this->data una variable en ['Comment']['post_id'] antes de guardar y asi el automaticamente guarda ese valor en la tabla.

Para tu caso seria conseguir el id de la persona y en las tablas que queres guardar suponete que tenes

$this->data['Person']['dui'] y tambien tenes $this->data['Person']['nit'] entonces antes de guardar a la fuerza le pones $this->data['Person']['person_id'] y despues le das $this->Modelo->save($this->data)

Ok, Antes que nada quiero agradecerte publicamente ya que sin tu ayuda este proyecto no estaria funcionando en sus fases iniciales y es que he avanzado bastante en esto y ya estoy haciendo las primeras cosas en el sistema, para continuar el asunto esta asi:


Una tabla "documents" que tiene como campos
id
person_id (Que guarda el ID  del sujeto)
c_document_id (esta es una llave foranea del catalogo de Documentos, osea de los tipos de documentos que puedan existir, ej: DUI, NIT, PASAPORTE, etc, etc)
number (que guarda el numero del documento en cuestion)
created
modified

ahora bien cuando yo estoy en mi formulario principal lo que hago es que le pregunto al usuario los tipos de documento y su numero

en el caso de que él elija meter dos documentos por ejemplo el DUI y el NIT entonces yo en la tabla "documents" que mencione mas arriba tendria que insertar dos registros de este modo
Asumiendo que la tabla documents esta vacia
Asumiendo que el ID de la persona es 1
Asumiendo que el ID del DUI es 1
Asumiendo que el ID del NIT es 2

Tabla documents:

id           person_id        c_document_id        number    created       modified
1                 1                      1                   00000     -------       --------
2                 1                      2                   00000     -------       --------

de esta manera deberia quedar la tabla documents despues de guardar este formulario, hago la aclaracion que los campos que te muestro en la imagen los dos estan de esta manera:

<?php echo $html->input('Document/number',array('size'=>'25'));?>
<?php echo $html->input('Document/number',array('size'=>'25'));?>

si no se entiende algo pues estare en espera

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: Propuesta para PHP con CAKEPHP
« Respuesta #13 : marzo 14, 2007, 10:17:06 pm »
Los nombres los has puesto mal

Citar
<?php echo $html->input('Document/number',array('size'=>'25'));?>
<?php echo $html->input('Document/number',array('size'=>'25'));?>

cuando envia los datos en el $_POST va uno que se llama $this->data['Document']['number'] , pero no pueden existir dos con ese nombre, por lo tanto solo puede almacenar 1 , una manera de que con la estructura de la BD que tenes ahorita podas hacer eso directamente no veo pero voy armar algo por aca.

Una manera de darle vueltas y hacerlo rapido que ve es con unos formularios multipasos, en la primera pantalla del formulario decis que ponga los datos del DUI , cuando de boton siguiente pasas a pedirle el del NIT y asi vas pasando por cada documento.

Pero dejame ver que puedo hacer pero no seria de un solo con $this-Model->save() sino que creo que utilizando un poco mas de PHP

Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Re: Propuesta para PHP con CAKEPHP
« Respuesta #14 : marzo 15, 2007, 08:38:42 am »
Los nombres los has puesto mal

Citar
<?php echo $html->input('Document/number',array('size'=>'25'));?>
<?php echo $html->input('Document/number',array('size'=>'25'));?>

cuando envia los datos en el $_POST va uno que se llama $this->data['Document']['number'] , pero no pueden existir dos con ese nombre, por lo tanto solo puede almacenar 1 , una manera de que con la estructura de la BD que tenes ahorita podas hacer eso directamente no veo pero voy armar algo por aca.

Una manera de darle vueltas y hacerlo rapido que ve es con unos formularios multipasos, en la primera pantalla del formulario decis que ponga los datos del DUI , cuando de boton siguiente pasas a pedirle el del NIT y asi vas pasando por cada documento.

Pero dejame ver que puedo hacer pero no seria de un solo con $this-Model->save() sino que creo que utilizando un poco mas de PHP

Ok gracias, estare pendiente