【问题标题】:Unable to pass data from controller to view in codeigniter无法从控制器传递数据以在 codeigniter 中查看
【发布时间】:2020-06-05 22:24:37
【问题描述】:

我在将数据从控制器传递到视图时遇到问题。我有一个内容可编辑的 div,我将其内容保存到我的数据库中;然后我想在视图中显示它。

我的控制器

    {
    function __construct(){
        parent::__construct();
        $this->load->database();
        $this->load->model('view_data');
        $data = array();
    }

    public function index(){
        $data['contactMe'] = $this->input->post('data');

        $this->db->update('content', $data); 

        $results = $this->view_data->loadData();

        $data['contactMeData'] = $results;

        $this->load->view('pages/home', $data);
    }

}

我的模型

<?php

class View_data extends CI_Model{

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

    public function loadData(){
         $this->db->where('contactMe');
         $query = $this->db->get('content');
         return $query->result_array();
    }
}

我的看法

<div class="w-100" ondblclick="makeEditable(this)" onblur="makeReadOnly(this)" contenteditable="true" id="contactMe">

        <?php 
          foreach($contactMeData as $contact){
              echo $contact;
          }
        ?>
      </div>
    <button id="editBtn" type="submit" value="">Save changes
    </button>

每次我重新加载页面时,它都会替换数据库中已有的数据,我只会得到一个空白 div。我无法查看数据库中的数据。

【问题讨论】:

  • 如果您不直接路由到控制器(即“/edit/”),那么您如何加载此视图?是否有另一个控制器加载此视图,或者您是否设置了自定义路由?
  • 我有一个基本的“页面”控制器来加载视图。我的 jqeuery 调用我的编辑控制器,用 div 的内容更新数据库。直接路由到它的问题是,每次我重新加载页面时,它都会用空白数据更新数据库。
  • 啊,所以在这种情况下,视图永远不会加载您在Edit 控制器中设置的数据。您必须直接通过Edit 控制器路由才能将您的contactMeData 传递给视图。如果您的数据库中的数据被仅加载该视图所取代,那么其他地方可能存在另一个问题。
  • 当我路由到编辑控制器时,我只得到一个空白 div。我仍然可以保存更改,但是一旦我重新加载页面,这些更改就会立即在数据库中被替换。

标签: php codeigniter


【解决方案1】:

尝试在 where 上添加参数

 $this->db->where('contactMe',$parameter);

尝试在视图中添加字段名称

echo $contact['field_name'];

【讨论】:

    【解决方案2】:

    这可能是因为每次打开URL 时它都会更新table,因此您需要一个条件来检查是否发出了POST 请求,然后更新column

    public function index(){
    
        if($this->input->post()){  // check for post request
    
            $data['contactMe'] = $this->input->post('data');
    
            $this->db->update('content', $data); // try writing db queries in model
        }
    
        $results = $this->view_data->loadData();
    
        $data['contactMeData'] = $results;
    
        $this->load->view('pages/home', $data);
    }
    

    看看,如果它对你有帮助。

    【讨论】:

      猜你喜欢
      • 2012-12-22
      • 2012-09-02
      • 2017-03-15
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      相关资源
      最近更新 更多