【问题标题】:How to display attributes from an object using my_controller in codeigniter如何在 codeigniter 中使用 my_controller 显示对象的属性
【发布时间】:2015-10-02 00:57:52
【问题描述】:

我希望能够在我的应用程序的任何位置显示表格中的属性,并让用户对其进行编辑。这意味着数据将来自数据库中的一行。每列都有一个默认值,用户可以根据需要更改该默认值。

表格列可能如下所示:

|编号 | admin_id |从业者 |从业者 |学生 |学生 |等等……

这是我的模型:

class Lang_trans_model extends CI_Model {

public function get_lang_trans($admin_id){
    $this->db->where('admin_id', $admin_id);
    $query = $this->db->get('lang_trans');
    return $query->row();
    } 

这是我的 MY_Controller:

class MY_Controller extends CI_Controller {


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

    $this->load->model('key_items_model');
    $this->load->model('lang_trans_model');

    foreach ($this->key_items_model->get_key_items() as $result){
        $this->label[$result->key] = $result->value;
    }

    //$admin_id = $this->session->userdata('admin_id');
    $admin_id = 3;

    $lang = $this->lang_trans_model->get_lang_trans($admin_id);
    //not sure what should go here????
    //I want to be able to use $lang->practitioner; to be able to have practitioner, or the edited attribute to show on the page

var_dump($lang);
// produces the following:
//object(stdClass)[26]
//public 'id' => string '3' (length=1)
//public 'admin_id' => string '3' (length=1)
//public 'practitioner' => string 'blah' (length=4)
//public 'practitioners' => string 'blahplural' (length=10)

如何完成 MY_Controller 以便能够在我的应用程序的任何位置使用这些数据字段?

我不介意使用面向对象的语法或数组语法。哪个更容易。我只是不知道如何在每个视图中不使用 foreach 语句来显示字段。我想用 $lang->practitioner 调用数据;视图中的格式。

提前致谢。

【问题讨论】:

  • 将结果赋值给变量,即$lang_trans_key_items = $this->key_items_model->get_key_items()var_dump($lang_trans_key_items);exit; 看看你有什么以及以什么形式。
  • $lang 的转储是什么?请对其进行有问题的编辑,但请将其格式化为标签。
  • 没有教师字段。
  • 你在$lang->practitioner 上得到了什么?这应该是正确的使用。
  • 如果我要从控制器中回显 $lang->practitioner,它可以工作,但我想从各种视图中回显它。当我输入 practitioner; ?> 从一个视图中,我得到以下错误: 1. 严重性:通知,消息:未定义变量:lang,以及 2. 试图获取非对象的属性。这一定与将 $lang 变量传递给视图有关?

标签: mysql arrays codeigniter view controller


【解决方案1】:

声明父类属性。比从子类调用它:

class MY_Controller extends CI_Controller
{
    public $lang;//parent variable declared

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

        $this->load->model('key_items_model');
        $this->load->model('lang_trans_model');

        foreach ($this->key_items_model->get_key_items() as $result) {
            $this->label[$result->key] = $result->value;
        }

        //$admin_id = $this->session->userdata('admin_id');
        $admin_id = 3;

        //dedicating value to variable
        $this->lang = $this->lang_trans_model->get_lang_trans($admin_id);
    }
}

儿童控制器:

class Practitioners extends MY_Controller
{
    public function __construct()
    {
        parent::__construct();
        // no need to call model if it is called in parent controller
    }

    public function index()
    {
        var_dump($this->lang);
    }
}

【讨论】:

  • 完美!非常感谢。你是一个节省时间的人。现在,我所要做的就是在视图 (html) 中提供以下内容: langtrans->practitioner; ?> 其中从业者是要显示的属性。
  • 我不得不将变量 $lang 更改为 $langtrans,因为它与 CI_Loader 文件中定义的内部 codeigniter 变量冲突。
  • 是的。您必须在父控制器中初始化变量而不是在子控制器中使用它。在我自己的项目中,我有一个称为$data 的“全局”数组变量,而不是在子控制器中分配需要输出的所有内容。例如$this->data['title'] = $this->Common_m->get_title(); $this->load->view('specific_view', $this->data).
猜你喜欢
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
  • 2016-08-27
相关资源
最近更新 更多