我试图整合codeigiter和样板。
我创建了一个控制器主页
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/* Heredamos de la clase CI_Controller */
class Home extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$data = array('title' => 'homepage', 'main_content' => 'home_v');
$this->load->view('template', $data);
}
}
然后我创建了一个包含2个文件的文件夹“includes”:页眉和页脚(在视图中)
并且在视图中我的模板和文件home_v以及一些文本只是为了知道我的示例是否正常工作。
的template.php
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>$title</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
<link rel="stylesheet" href="<?php echo base_url('css/normalize.css'); ?>">
<link rel="stylesheet" href="<?php echo base_url('css/main.css'); ?>">
<script src="<?php echo base_url('js/vendor/modernizr-2.6.2.min.js'); ?>"></script>
</head>
<body>
<!--[if lt IE 7]>
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
<![endif]-->
<!-- Add your site or application content here -->
<div id="container">
<header>
<?php $this->load->view('includes/header'); ?>
</header>
<div id="main" role="main">
<?php $this->load->view($main_content); ?>
</div>
<footer>
<?php $this->load->view('includes/footer'); ?>
</footer>
</div>
<!-- fin container -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.8.3.min.js"><\/script>')</script>
<script src="js/plugins.js"></script>
<script src="js/main.js"></script>
<!-- Google Analytics: change UA-XXXXX-X to be your site's ID. -->
<script>
var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
</body>
</html>
之后是新的控制器分类
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/* Heredamos de la clase CI_Controller */
class Categorias extends CI_Controller {
function __construct()
{
parent::__construct();
/* Cargamos la base de datos */
$this->load->database();
/* Cargamos la libreria*/
$this->load->library('grocery_crud');
/* Añadimos el helper al controlador */
$this->load->helper('url');
}
function index()
{
/* Puse lo mismo pero cambiando el contenido */
//$data = array('title' => 'categorias', 'main_content' => 'categorias/categorias_v');
//$this->load->view('template', $data);
/* si solo muestro esto funciona el crud */
//redirect('categorias/categorias_v');
}
/*
*
**/
function categorias_v()
{
try{
/* Creamos el objeto */
$crud = new grocery_CRUD();
/* Seleccionamos el tema */
$crud->set_theme('flexigrid');
/* Seleccionmos el nombre de la tabla de nuestra base de datos*/
$crud->set_table('categorias');
/* Le asignamos un nombre */
$crud->set_subject('Categorias');
/* Asignamos el idioma español */
$crud->set_language('spanish');
/* Aqui le decimos a grocery que estos campos son obligatorios */
$crud->required_fields(
'id_categoria',
'nombre_categoria'
);
/* Aqui le indicamos que campos deseamos mostrar */
$crud->columns(
'id_categoria',
'nombre_categoria'
);
/* Generamos la tabla */
$output = $crud->render();
$this->load->view('categorias/categorias_v', $output);
}catch(Exception $e){
/* Si algo sale mal cachamos el error y lo mostramos */
show_error($e->getMessage().' --- '.$e->getTraceAsString());
}
}
}
并在视图中 Categias_v
<?php
foreach($css_files as $file): ?>
<link type="text/css" rel="stylesheet" href="<?php echo $file; ?>" />
<?php endforeach; ?>
<?php foreach($js_files as $file): ?>
<script src="<?php echo $file; ?>"></script>
<?php endforeach; ?>
<?php echo $output; ?>
但这不起作用,我有一些错误
遇到了PHP错误 严重性:注意 消息:未定义的变量:css_files 文件名:categorias / categorias_v.php 行号:2
希望有人可以帮助我,提前谢谢!答案 0 :(得分:0)
在categorias_v
视图中,您尝试访问名为$css_files
的变量 - 但是,您永远不会将任何变量传递到该视图中。
通过将数组发送到$this->load->view
方法,将变量传递到视图中,如下所示:
$data = array('css_files' => 'style.css');
$this->load->view($main_content, $data);
// $data has the array key of css_files,
// so in the view $css_files will be available.