php - instalar - codeigniter vs laravel
La mejor forma de implementar menús/encabezados/pie de página mediante codeignitor (1)
Me preguntaba cuál era la mejor forma / práctica para implementar menús, encabezados y pies de página con el cambio de contenido, como las notificaciones que usan codeignitor.
Por ejemplo, decir que tenía una alerta dentro del menú del encabezado que vinculaba a los datos dentro de una base de datos y que necesitaba verificar los cambios cada vez que se carga una página. Inicialmente pensé que podía llamar al encabezado usando $ this-> load-> view (''header'') cada vez, pero esto significaría que necesitaría una función global para resolver cualquier cambio en las alertas y luego pasar eso a la vista de encabezado , cada vez, no es bueno!
Supongo que necesito una forma global de llamar a la función que carga el encabezado del sitio web (menú) desde cualquier controlador que resuelva el contenido y muestre la vista en consecuencia.
por ejemplo, un controlador que muestra páginas de blog.
en su constructor de controlador: defina la carpeta en la que se encuentran sus archivos de vista de blog y el nombre de la plantilla
// the folder your content files are in
$this->templatefolder = ''blog'' ;
// the template name
$this->view_template = ''blog_template'' ;
en un método cuando esté listo para llamar a algunas vistas
$data[''content01''] = ''search_articles'';
$data[''content02''] = ''main_article'';
$data[''content03''] = ''suggested_articles'';
$this->load->view( $this->view_template, $data );
la plantilla misma ve / blog_template.php
// opening html etc that is generic to website
$this->load->view(''tmpl_open'');
// so if the header has to be dynamic
// get the header from a model (or library etc)
// and either pass the header content or just echo it out directly
$this->load->model(''header'');
if( ! $newHeader = $this->header->returnNewHeader() )
{
// fallback if the header doesn''t come back from the model
$this->load->view(''default_header'');
}
else
{ echo $newHeader ; }
// this is optional but IF the template folder is not set
// we have a default folder called ''pages'' to look in for the content views
// but in this example the folder is set to be ''blog''
// so the blog view files will be in application/views/blog/search_articles.php etc etc
if( isset($this->templatefolder)){
$templatefolder = $this->templatefolder . ''/'' ; }
else { $templatefolder = ''pages/''; }
// header that is specific for the content
$this->load->view($templatefolder . ''header'');
// so in this specific example its going to load 3 view files, but this part is completely flexible
if(isset($content01))
$this->load->view($templatefolder.$content01);
if(isset($content02))
$this->load->view($templatefolder.$content02);
if(isset($content03))
$this->load->view($templatefolder.$content03);
if(isset($content04))
$this->load->view($templatefolder.$content04);
if(isset($content05))
$this->load->view($templatefolder.$content05);
if(isset($content06))
$this->load->view($templatefolder.$content06);
if(isset($content07))
$this->load->view($templatefolder.$content07);
if(isset($content08))
$this->load->view($templatefolder.$content08);
// example of an optional file that you can uncomment for testing
// $this->load->view(''objecttesting'');
// bottom nav bar generic to website
$this->load->view(''tmpl_footer'');
// closing html etc generic to website
$this->load->view(''tmpl_close'');