2008-11-28 19 views
6

Creo que podría estar acercándome a esto de forma incorrecta, por lo que agradecería cualquier comentario/guía. Espero que pueda explicar coherentemente lo suficiente lo que yo estoy tratando de lograr:Codeigniter: cómo reutilizar el código para generar un bloque de HTML

  • Quiero crear un bloque de HTML (por ejemplo, una caja que contiene el perfil de un usuario ), que voy a cargar como parte de mi diseño en la mayoría de las páginas que genero I .

  • También me gustaría poder volver a generar el contenido de esta caja en una URL separada. Esto es para poder actualizar el cuadro con una llamada AJAX.

  • No quiero duplicar el código que crea este HTML.

Soy consciente de que digan que podía cargar esta caja mediante una llamada AJAX, pero eso me parece añadir una llamada innecesaria al servidor?

De la forma en que pensé que podría hacerlo es tener un método en mi controlador que solo presente este bloque de HTML, pero ¿cómo solicitaría la salida de este método dentro de otro controlador/vista?

¿Cómo te acercarías a esto?

Gracias de antemano

Respuesta

7

crear una vista para generar el bloque de HTML para el perfil del usuario y llamarlo desde su controlador usando:

$user_html = $this->load->view('user_view', $user_data, true); 

El tercer parámetro devuelve la vista como una cadena en lugar de mostrándolo. Esto puede pasar a otra vista de la manera habitual.

$data['user_block'] = $user_html; 
$this->load->view('page_view', $data); 
+0

Sin embargo, esto no le dará una URL separada que puede usar para una llamada AJAX. – victoriah

+0

gracias.Entonces, supongo que la clave aquí es poner todo el procesamiento de los datos dentro del modelo, así que tengo el menor código posible en el controlador. –

+0

Y no reduce la duplicación de código. – victoriah

-1

En lo que se refiere a los datos, usted no necesita '' para generar el HTML con PHP. Puede usar jQuery para generar los elementos necesarios a partir de un resultado de objeto JSON en el origen de la página. A continuación, puede mostrar una pequeña animación de "carga" agradable en el elemento mientras se pone en estado de "domready".

En cuanto a la repoblación de un div se refiere, haga lo siguiente:

Hacer un div para su perfil y darle un id. Ponga cada 'elemento' de datos en su propio elemento p y ajuste los datos reales en un elemento span. por ejemplo <p> Nombre:   <lapso> juandiaz </span > </p > Entonces sólo tiene que utilizar jQuery para atravesar el DOM y repoblar los tramos con datos. Solo asegúrate de dar salida a tus datos en el 'orden' correcto.

Cualquier pregunta, siéntase libre de comentarios.

+1

Veo su punto, pero preferiría usar javascript para mejorar progresivamente un sitio en lugar de confiar en él para cosas que realmente podría hacer en el lado del servidor –

+0

Por favor, dé un ejemplo del tipo de html que desea que se genere dinamicamente. – Jay

Cuestiones relacionadas