codeigniter - name - Cómo crear una página maestra(diseño) con un estilo de diseño base
load model codeigniter parameter (4)
Diseño dinámico
Usted crearía un nuevo Controlador con una variable $ de plantilla pública. Su Controlador extendido heredará la variable $ template del Controlador Maestro.
MY_Controller
class MY_Controller extends CI_Controller
{
public $template=null;
public function __construct()
{
if(is_null($this->template)){
$this->template = ''layouts/default'';
}
}
}
Admin_controller
class Admin_Controller extends MY_Controller
{
public function __construct()
{
//Still inherits from MY_Controller
//this time, any controller extending Admin_Controller
//will point to ''views/layouts/admin''
if(is_null($this->template)){
$this->template = ''layouts/admin'';
}
}
}
-
class User extends MY_Controller
{
public function index()
{
//$this->template is inherited
//from MY_Controller
//which point to ''views/layouts/default''
//We can also load a view as data
//ie no master layout, INTO our master layout
//note we don''t pass $this->template
//and set the third param as true
$dynamic_sidebar = $this->load->view(''views/sidebar/dynamic'', array(
''data'' => ''some_data''
), true);
return $this->load->view($this->template, array(
''partial'' => ''users/index'' //partial view,
''dynamic_sidebar'' => $dynamic_sidebar
));
}
}
Vistas / diseños / por defecto
<body>
//load the main view
//in our example we have also loaded
//a dynamic sidebar with this view
<?php $this->load->view($partial); ?>
<?php $this->load->view($dynamic_sidebar); ?>
//load a static view
//views/sidebar/static
<?php $this->load->view(''sidebar/static''); ?>
</body>
Soy nuevo en CodeIgniter. Quiero crear una página maestra o diseño con estilo base que contendrá menú, pie de página, etc. No quiero escribir contenido repetitivo en todas las páginas y cargarlo automáticamente en todas las páginas. Por ejemplo, puedo crear la Página maestra en asp.net o Diseño en asp.net mvc. Estoy seguro de que puedo hacerlo en CodeIgniter.
Lo que probablemente hagamos es ver archivos separados para encabezado, menú, pie de página, etc. que es común para todas las páginas. E inclúyelos dentro de cada vista. me gusta
$this->view(''header'');
$this->view(''menu'');
//Some specific content
$this->view(''footer'');
Si necesita la misma funcionalidad sin copiar lo anterior en todas las vistas, debe crear una función en su controlador de la siguiente manera:
private function myviewfunction($current_view)
{
$this->load->view(''header'');
$this->load->view(''menu'');
$this->load->view($current_view);
$this->load->view(''footer'');
return NULL;
}
y llame a esta función en todas sus páginas (métodos)
$this->myviewfunction(''about''); //About is the specific view for the method
Siguiendo la idea de una página maestra en Laravel , podemos hacer esto:
Código de controlador
$this->load->view(''show'');
Ver "show.php"
Establezca valores para la página maestra y luego pase las variables a la página maestra. Mantenga sus códigos de página maestros dentro de ob_start () y ob_get_clean () .
<?php $page_title = "My first page"; ?>
<?php ob_start(); ?>
Your header stylesheet links and scripts
<?php $page_header = ob_get_clean(); ?>
<?php ob_start(); ?>
<div>
<h1>This is a Header</h1>
<?php $this->load->view(''Partials/list''); ?>
</div>
<?php $page_content = ob_get_clean(); ?>
<?php ob_start(); ?>
Your footer html or scripts
<?php $page_footer = ob_get_clean(); ?>
<?php $this->load->view(''Layout/app'',array(
''page_title'' => $page_title,
''page_header'' => $page_header,
''page_content'' => $page_content,
''page_footer'' => $page_footer
)); ?>
Vista parcial "Partials / list.php"
En caso de que no quiera que su código esté lleno de gente. Puede crear algunas vistas parciales para mantener las cosas simples.
<ul>
<li>LIst item 1</li>
<li>LIst item 2</li>
<li>LIst item 3</li>
</ul>
Página maestra "Diseño / app.php"
<html>
<head>
<title><?= v($page_title) ?></title>
<?= v($page_header) ?>
</head>
<body>
<?= v($page_content) ?>
<?= v($page_footer) ?>
</body>
</html>
<?php
function v(&$var)
{
return isset($var) ? $var : '''';
}
Entonces eso genarará el código:
<html>
<head>
<title>My first page</title>
Your header stylesheet links and scripts
</head>
<body>
<div>
<h1>This is a Header</h1>
<ul>
<li>LIst item 1</li>
<li>LIst item 2</li>
<li>LIst item 3</li>
</ul>
</div>
Your footer html or scripts
</body>
</html>
supongamos que tienes una página html
<html>
<head>
<title> Hello World </title>
</head>
<body>
<div id="menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</div>
<div id="main-content">
<!-- this is the dynamic part -->
</div>
<div id="footer">
Copy Right 2013 Hello World
</div>
</body>
</html>
puedes dividirlo en 1- encabezado 2- menú 3- contenido principal 4- pie de página
básicamente pones
<html>
<head>
<title> Hello World </title>
</head>
<body>
en una vista llamada "view_header", pones
<div id="menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</div>
<div id="main-content">
en una vista llamada "view_menu" y luego pones
</div>
<div id="footer">
Copy Right 2013 Hello World
</div>
</body>
</html>
en una vista llamada "view_footer" luego en su controlador
$this->load->view(''view_header'');
$this->load->view(''view_menu'');
$this->load->view(''YOUR_VIEW'');
$this->load->view(''view_footer'');
La otra solución, que veo es mejor: crear una vista llamada view_template_1.php
<html>
<head>
<title> Hello World </title>
</head>
<body>
<div id="menu">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</div>
<div id="main-content">
<?php $this->load->view($content); ?>
</div>
<div id="footer">
Copy Right 2013 Hello World
</div>
</body>
</html>
en el controlador digamos que quieres llamar a una vista llamada Acerca de
$data = array(''content''=>''about'');
$this->load->view(''view_template'',$data);