为什么 CodeIgniter 中的 set_rules() 方法会出错?
Why does set_rules() method in CodeIgniter give error?
所以,我是 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 库似乎没有加载到您放置它的位置。我建议您将它放在您的 class 构造中,或者只是将它自动加载到您的 config/autoload.php
文件中。
- 在你的class构造中
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
并进行了全新安装,我的问题就解决了。
所以,我是 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 库似乎没有加载到您放置它的位置。我建议您将它放在您的 class 构造中,或者只是将它自动加载到您的 config/autoload.php
文件中。
- 在你的class构造中
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
并进行了全新安装,我的问题就解决了。