在控制器中调用多个模型

时间:2014-10-26 17:23:51

标签: php codeigniter

您好我在控制器中运行多个模型时遇到问题。

第一个模型是加密,然后第二个模型是插入。

public function addStore()
{
    $name = $_POST['name'];
    $address = $_POST['address'];
    $gpsAddress = $_POST['gps_address'];
    $phone = $_POST['phone'];
    $email = $_POST['email'];
    $password = $_POST['password'];
    $status = 1;

    $this->load->model('EncryptionModel');
    $password = $this->EncryptionModel->encryptPassword($password);

    $this->load->model('StoresModel');
    $this->StoresModel->addStore($name, $address, $gpsAddress, $phone, $email, $password, $status);
}

以下是错误

致命错误:在\ application \ controllers \ stores.php中的非对象上调用成员函数addStore()

取出加密模型调用时不会发生这种情况。

按要求加密模型

class EncryptionModel extends CI_Controller {

public function encryptPassword($password)
{
    $options = ['cost' => 12];
    $password = password_hash($password, PASSWORD_BCRYPT, $options)."\n";
    return $password;
}
}

2 个答案:

答案 0 :(得分:3)

应该......

class EncryptionModel extends CI_Model {

注意CI_Model代替CI_Controller


另请参阅CodeIgniter class naming recommendations关于大写和小写最佳做法......

  

“类名应始终以大写字母开头。多个单词应使用下划线分隔,而不是CamelCased 。所有其他类方法应完全小写并命名以明确指示他们的功能,最好包括一个动词。尽量避免使用过长而冗长的名字。“

  

INCORRECT
类超类类SuperClass

     

正确
类Super_class

class Super_class {
    function __construct()
    {

    }
}

答案 1 :(得分:1)

加密模型正在扩展CI_Controller,它应该扩展CI_Model

谢谢大家。