0

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

およびビューで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 に答える