0

我试图整合codegiter和样板。

我创建了一个控制器主页

<?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 个文件的文件夹“包含”:页眉和页脚(在视图中)

并且还在视图中查看我的模板和带有一些文本的文件 home_v,以了解我的示例是否有效。

模板.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()); 
        } 
    } 
}

并在视图中categorias_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

希望有人可以帮助我,在此先感谢!

4

1 回答 1

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.
于 2013-01-03T17:00:38.933 回答