在codeigniter中包含视图文件

时间:2014-03-13 09:53:34

标签: php codeigniter codeigniter-2

我是Codeigniter的新手。我正在做一个项目,在每个页面中,我想包括一个显示多语言的下拉菜单。为此,我在另一个控制器的一个视图文件中包含一个视图文件:

<?php $this->load->view('language/alllang');?>

alllang.php 中,我想包含显示下拉列表的代码。为此,我使用以下代码创建了一个控制器 LanguageController

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Language extends CI_Controller
{

    function __construct()
    {
        parent::__construct();

        $this->load->helper(array('form', 'url'));
        $this->load->library('form_validation');
    }


    function alllang()
    { 
        $data['val']="hhh";  // for testing
        $this->load->view('alllang',$data);
        exit;
    }
}

alllang.php 的代码是:

<?php
echo $val;
?>

但是我收到这样的错误:

  

遇到PHP错误   严重性:通知
  消息:未定义的变量:val
  文件名:language / alllang.php
  行号:2

此代码仅用于测试目的(不是多语言的代码)。如何设置要从控制器包含在视图文件中的值。

2 个答案:

答案 0 :(得分:1)

你的解释有点令人困惑,但这样做

$this->load->view('language/alllang');

您没有调用控制器,只调用视图,而不传递任何数据。如果我做对了,你有一个父视图,然后在里面你想要一个语言下拉视图?那么,在这种情况下,应该使用数据数组调用下拉视图,并且数据应来自调用父视图的控制器。它有意义吗?

答案 1 :(得分:1)

已修改数据库访问功能:

你可以创建一个库文件并将其保存在应用程序/库中,称之为&#34; language_lib.php&#34;:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Language_lib{
    function __construct(){
        $this->CI =& get_instance();
    }

    function lang_dropdown(){
        //db queries:
        $q = $this->CI->db->select('*')->from('table')->get()->result_array();
        $html = … //your dropdown code here using $q
        return $html;
    }
}

接下来,在application / config / autoload.php中:

$autoload['libraries'] = array('language_lib');

现在在需要下拉的每个控制器方法中,例如索引方法:

function index(){
    $data['dropdown'] = $this->language_lib->lang_dropdown();
    $this->load->view('some_view', $data);
}

您可以使用<?php echo $dropdown; ?>

在视图中访问此内容