如何使用变量在codeigniter中加载视图?

时间:2014-02-27 07:25:18

标签: php codeigniter

嗨我想只使用变量而非直接名称

加载视图页面

这是我的代码: -

function load_views()
    {
      $this->load->model('test_model');
      $data=$this->test_model->getMenu();
      foreach($data as $data_menu) {
            echo $data_menu->views;
            $this->load->view($data_menu->views);
      }
    }

输出:

test_view
  An Error Was Encountered Unable to load the requested file: .php

实际上它从db获取值,但它没有调用视图文件夹中存在的视图文件。

这是我的观点页面:

      

    <div class="panel-heading">
           <h3 class="panel-title">Dashboard</h3>
    </div>
    <br/>
        <div class="row">


            <?php
                $count = 0;
                 foreach($m as $data_menu){

                    if(($count% 4== 0))
                    {
            ?>      
                        <div class = "row"></div>
            <?php
                    }
            ?>
                 <div class="col-md-3"> 
                    <!--<a href="<?/*php echo base_url()*/?>index.php/<?php/* echo $data_menu->views*/?>">-->

                    <a href="<?php echo base_url()?>index.php/dn_login_controller/load_views">

                        <img class="img-rounded" src="" height="80" width="80" />
                         <div class="caption"> 
                            <h3><?php echo $data_menu->function_name; ?></h3>
                        </div>
                    </a>

                 </div>

            <?php
                    $count++;
                 }
            ?>


      </div>  
</div>

现在在视图中我想动态加载视图但我不能... 请帮帮我......

2 个答案:

答案 0 :(得分:0)

如果你var_dump($data),你会发现数组中某处有一个空值。

正如kumar_v在评论中所说,尝试检查空值

foreach($data as $data_menu) {
    if(!empty(trim($data_menu->views)))
        $this->load->view($data_menu->views);
}

答案 1 :(得分:-1)

这个问题可能是因为,您不能直接从单个函数/控制器加载多个视图,当您加载视图CI时会将其发送到浏览器。 还有另外两种解决方法:

  • 传递第二个参数NULL&amp;加载菜单视图时第3个参数为TRUE,这将创建html作为数据而不是将其发送到浏览器。请参阅此链接:codeigniter: loading multiple views
  • 创建一个视图文件,将您的数据传递给该视图&amp;在该视图上执行for循环&amp;加载你的所有观点。