codeigniter表数组变量未定义

时间:2014-07-07 10:32:48

标签: php codeigniter view

这应该是一个简单的数组传递给视图。控制器设置为从表中提取所有数据。我已初始化表库并使用$ this-> load->模型(数组('Account')加载模型代码。我已经构建了完整的crud方法。

我在视图页面上得到一个未定义的变量。

控制器代码是:

        public function index(){
        $this->load->library('table');
        $children = array();                    
        $this->load->model(array('Account'));
        $children = $this->Account->get();      //retrieves all the records in the database
          foreach ($children as $child){
            $account = new Account();
            $account->load($account->id);
            $children[] = array(
                $account->id,
                $account->familyName,
                $account->addr1,
                $account->city,
                $account->state,
                $account->zip,
                $account->phone1,
                $account->email,
                $account->parent_only,  
            );
          }


        $this->load->view('main_view');
        $this->load->view('body_content_ma', array(
            'body_content_ma' => $children,

        ));
     }

在视图页面上,我收到一个错误,指出未定义的变量子项。您认为我在这里失踪了什么:

查看代码是:

           <?php 
       $this->table->set_heading('ID', 'Family Name', 'City', 'State', 'Zip', 'Phone', 'Email', 'Parent only Pickup');
       echo $this->table->generate($children);
      ?>

解答:

这是最终有效的编码。

我不得不回过头几次才能得到失踪的东西。

     public function index(){
        $this->load->library('table'); 
        $children = array();
        $this->load->model(array('Account'));

        $account = $this->Account->get();      //retrieves all the records in the database
          foreach ($account as $c){
            $account = new Account();
            $account->load($account->id);
            $children[] = array(
                $c->id,
                $c->familyName,
                $c->addr1,
                $c->city,
                $c->state,
                $c->zip,
                $c->phone1,
                $c->email,
                $c->parent_only,    
            );
          }

        //echo '<tt><pre>' . var_export($children, TRUE) . '</pre></tt>';

        $this->load->view('main_view');
        $this->load->view('body_content_ma', array(
            'body_content_ma' => $children
            ));

     }

我有一种感觉,我多次使用$ children并覆盖变量。我是正确的。一旦我宣布变量。我不应该再用它了。

当我将变量$ children重新分配给$ children = $ this-&gt; Account-&gt; get(); 我认为我有效地覆盖了之前声明为该行的数组。因此即使数组被填充,数组引用也被破坏了。

我确实在视图代码中使用了$ body_content_ma来生成表格。 一切都在现在呈现。

开始分页!

4 个答案:

答案 0 :(得分:0)

您可以使用此代码..希望能为您效劳。

public function index(){
    $this->load->library('table');
    $children = array();                    
    $this->load->model(array('Account'));
    $data['children'] = $this->Account->get();     //retrieves all the records in the database

    $this->load->view('main_view');
    $this->load->view('body_content_ma',$data));
 }

在视图中,您可以使用$ children作为数组来打印值。

答案 1 :(得分:0)

这将是我的功能;

    public function index()
    {        
        $this->load->library('table');
        $this->load->model('Account_model');

        $data['children']  = $this->Account_model->get();

        foreach ($data['children'] as $child) 
        {
            // Your foreach code...
        }

        $this->load->view('main_view');
        $this->load->view('body_content_ma', $data);
  }

答案 2 :(得分:0)

您的 view

<?php 
   $this->table->set_heading('ID', 
                             'Family Name', 
                             'City', 
                             'State', 
                             'Zip', 
                             'Phone', 
                             'Email', 
                             'Parent only Pickup');

   echo $this->table->generate($body_content_ma);
?>


说明:

您正在将 body_content_ma 从您的控制器传递到您的视图而不是 children ,从而为您提供 undefined error


修改

以下是生成表格行的数组格式 array 应包含 array of rows

$data = array(
         array('Name', 'Color', 'Size'),
         array('Fred', 'Blue', 'Small'),
         array('Mary', 'Red', 'Large'),
         array('John', 'Green', 'Medium')   
         );

echo $this->table->generate($data);


文档: http://ellislab.com/codeigniter/user-guide/libraries/table.html

答案 3 :(得分:0)

只是你遗漏的简单事物$ children变量被映射到$ body_content_ma 只需将$ children替换为$ body_content_ma。

echo $this->table->generate($children);

替换为

echo $this->table->generate($body_content_ma );