您好我在控制器中运行多个模型时遇到问题。
第一个模型是加密,然后第二个模型是插入。
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;
}
}
答案 0 :(得分:3)
应该......
class EncryptionModel extends CI_Model {
注意CI_Model
代替CI_Controller
。
另请参阅CodeIgniter class naming recommendations关于大写和小写最佳做法......
“类名应始终以大写字母开头。多个单词应使用下划线分隔,而不是CamelCased 。所有其他类方法应完全小写并命名以明确指示他们的功能,最好包括一个动词。尽量避免使用过长而冗长的名字。“
INCORRECT :
类超类类SuperClass正确:
类Super_classclass Super_class { function __construct() { } }
答案 1 :(得分:1)
加密模型正在扩展CI_Controller,它应该扩展CI_Model
谢谢大家。