从同一个控制器调用函数而不传递$ data

时间:2013-01-31 17:57:22

标签: codeigniter jquery-mobile

我正在使用Jquery Mobile构建HTML移动应用程序。到目前为止它的惊人之处。

然而,在构建我的动态模板时,我遇到了一些障碍。

继承人我的控制人员:

function index()
{
        $data['page'] = "home";
        $page['head'] = $this->load->view('template/head',$data,TRUE);
        $page['header'] = $this->load->view('template/header', $data, TRUE);
        $page['footer'] = $this->load->view('template/footer', $data, TRUE);
        $page['nav'] = $this->nav($data['page']);
        $this->load->view("pages/home", $page);
}

function nav($page)
{
        $data['page'] = $page;
        $page['header'] = $this->load->view('template/header', $data, TRUE);
        $page['footer'] = $this->load->view('template/footer', $data, TRUE);
        return $this->load->view('template/nav',$page,TRUE);
}

无论我为什么设置这种方式,在function nav($page)视图中的任何原因会导致Undefined variable: headerUndefined variable: footer错误?

1 个答案:

答案 0 :(得分:3)

这是因为你试图用数组索引覆盖基于字符串的变量。 您将$page传递给方法,但随后尝试创建一个名为$page的数组以传递给视图。您需要重命名数组以传递给视图:

function nav($page)
{
    $data['page'] = $page;

    // you should rename the array to pass to the view (from $page to $my_page)
    $my_page['header'] = $this->load->view('template/header', $data, TRUE);
    $my_page['footer'] = $this->load->view('template/footer', $data, TRUE);
    return $this->load->view('template/nav',$my_page,TRUE);
}