【问题标题】:PHP Codeigniter, assigning property value and accesing itPHP Codeigniter,分配属性值并访问它
【发布时间】:2014-12-20 15:11:23
【问题描述】:

我正在尝试从一个函数为属性分配一个值,并在另一个函数中访问它。我认为这应该就这么简单。不幸的是,我似乎无法处理这个简单的任务。

这是我的控制器:

<?php
class Form_Controller extends CI_Controller {

    public $current_user;
    public $pi = 3.14;

    function index() {
        $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');

        $this->form_validation->set_rules('username', 'Username');
        $this->form_validation->set_rules('password', 'Password');

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('login_form');
        } else {
            $this->load->model('Admin_Users_Model');
            $is_logged_in = $this->Admin_Users_Model->login();

            if ($is_logged_in) {
                $this->load->view('admin_panel/panel');
                $this->load->view('admin_panel/account_verification_status_form');
            } else {
                $this->load->view('login_form');
            }
        }
    }

    function account_verification() {

        $this->load->model('User_Id_Model');
        $data['user_data'] = $this->User_Id_Model->get_user_credentials();

        $this->current_user = $data['user_data'];

        foreach ($this->current_user as $value) {
            echo $value;
        }

        $this->load->view('admin_panel/panel');
        $this->load->view('admin_panel/account_verification_status_form');
        $this->load->view('admin_panel/account_verification_name_form', $data);
        $this->load->view('admin_panel/account_verification_status', $data);
    }

    function name_verification() {

        $selected_value = $this->input->post('verify-name');

        echo count($this->current_user) . '<br />';

        echo $this->current_user;
        echo $this->pi;
      $this->account_verification();
    }

    private function _write_to_database($user_data) {
        $this->load->model('User_Id_Model');
        $this->User_Id_Model->write_to_database($user_data);
    }

}
?>

当我调用account_verification() 时,$current_user 被分配了一个值,我可以打印它。之后我打电话给name_verification(),但$current_user 没有任何价值。 如果你知道这里发生了什么,请解释一下。

【问题讨论】:

    标签: php codeigniter properties


    【解决方案1】:

    首先在查看您的代码之后

    1) 如果您从 url 调用 name_varification,那么您没有为全局变量分配任何值,即

        $this->current_user.
    

    2) 如果您从 url 调用 account_varification,那么您将数据分配给 gobal 变量

     $this->current_user 
    

    并且您没有从 account_varification 中调用 name_varification,所以这再次意味着您是从 url 调用它,所以它当然会丢失它的值,因此正确的代码是调用 first name_varificaton 并为其分配以下数据。

       $this->load->model('User_Id_Model');
       $data['user_data'] = $this->User_Id_Model->get_user_credentials();
       $this->current_user = $data['user_data'];
    

    在调用 $this->account_verification 之后就像你正在调用的那样,这两个函数都会有值

    希望你能理解。 问候 伊姆兰·卡西姆

    【讨论】:

    • 我不知道你是什么意思。请详细说明。澄清一下 - 我有一个表格的看法。表单调用 account_verification() account_verification() 添加了一个视图,该视图加载了另一个表单。当提交第二个表单时,它会调用 name_verification()。在 account_verification() 我得到一些用户凭据: $data['user_data'] = $this->User_Id_Model->get_user_credentials();我要做的是将该凭据传递给第二种方法,因此我可以使用从第二种形式收到的值更新数据库中的该用户。
    • 如果有两种形式,这意味着您正在通过 url 调用这两个函数,因此当您调用 name_varification 函数时,全局变量 current_user 不会保留其值。这就是我的意思,如果你想保留这些值而不是你需要在提交第一个表单后使用 session 来重新获取值,并且当你调用第二个方法 name_varification 时从 session 中获取这些值,这将解决你的问题。
    • 你说得对。将它添加到会话中可以将其传递给下一个函数......剩下的就是弄清楚从现在开始要做什么:X
    • 如何选择您的帖子作为答案?
    • 只需点击左上方的向上箭头键 0
    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 2020-05-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 2020-10-28
    • 2023-03-25
    • 2018-10-23
    相关资源
    最近更新 更多