为什么CodeIgniter中的set_rules()方法会出错



因此,我是CodeIgniter的新手,我决定学习构建CMS的教程。我在代码中写了完全相同的东西,但当我点击Submit按钮时,它会给我这个错误(我的CodeIgniter版本是3.1.6(:

A PHP Error was encountered
Severity: Notice
Message: Undefined property: Product::$input
Filename: libraries/Form_validation.php
Line Number: 171
Backtrace:
File: /opt/lampp/htdocs/codeigniter_cms/panel/application/controllers/Product.php
Line: 40
Function: set_rules
File: /opt/lampp/htdocs/codeigniter_cms/panel/index.php
Line: 315
Function: require_once

An uncaught Exception was encountered
Type: Error
Message: Call to a member function method() on null
Filename: /opt/lampp/htdocs/codeigniter_cms/panel/system/libraries/Form_validation.php
Line Number: 171
Backtrace:
File: /opt/lampp/htdocs/codeigniter_cms/panel/application/controllers/Product.php
Line: 40
Function: set_rules
File: /opt/lampp/htdocs/codeigniter_cms/panel/index.php
Line: 315
Function: require_once

这是我的产品控制器代码:

<?php
class Product extends CI_Controller {
public $viewFolder = "";
public function __construct()
{
parent::__construct();
$this->viewFolder = "product_v";
$this->load->model("product_model");
}
// index method
// new form method
public function save() {
$this->load->library("form_validation");
$this->form_validation->set_rules("title", "Title", "required|trim");
$this->form_validation->set_message(
array(
"required" => "{field} field must be filled."
)
);
$validate = $this->form_validation->run();
if ($validate) {
echo "Saved";
} else {
echo validation_errors();
}
}

这是我的HTML代码:

<div class="row">
<div class="col-md-12">
<h4 class="m-b-lg">
Add New Product
</h4>
</div><!-- END column -->
<div class="col-md-12">
<div class="widget">
<div class="widget-body">
<form action="<?php echo base_url("product/save"); ?>" method="post">
<div class="form-group">
<label>Title</label>
<input name="title" class="form-control" placeholder="Title">
</div>
<div class="form-group">
<label>Description</label>
<textarea name="description" class="m-0" data-plugin="summernote" data-options="{height: 250}"></textarea>
</div>
<button type="submit" class="btn btn-primary btn-md btn-outline">Submit</button>
<a href="<?php echo base_url("product/index"); ?>" class="btn btn-md btn-danger btn-outline">Cancel</a>
</form>
</div><!-- .widget-body -->
</div><!-- END column -->

我正试图修复这个错误好几个小时。任何帮助都将不胜感激。

似乎Form_validation库没有加载到您放置它的位置。我建议您将它放置在类构造中,或者自动加载到config/autoload.php文件中。

  • 在类构造中
public function __construct()
{
parent::__construct();
$this->load->library('form_validation');
// Add your other models, helpers, etc here
}

  • application/config/autoload.php文件中全局自动加载
$autoload['libraries'] = array('form_validation');

尝试加载表单助手

$this->load->helper('form');

文档并没有说明要将表单验证库和表单助手一起使用。但我认为这是必要的。我很久以前也遇到过同样的问题。但我忘了解决办法。我希望这能解决你的问题。

所以,我发现了问题。

问题不在CodeIgniter,而在LAMPP。因此,我删除了LAMPP并重新安装,我的问题得到了解决。

最新更新