我有一个表单我正在尝试re-populate via the CodeIgniter docs,我正在尝试在我的视图文件中使用set_value()
函数,但收到错误:Message: Call to undefined function set_value()
当使用set_rules()
函数逐个字段地定义验证时,我在其他地方看到StackOverflow解决方案similar problem。
但是,我已将config/form_validation.php
中的所有验证合并为sets of rules。因为我的所有验证都是在规则集中定义的,所以它似乎与逐字段定义时略有不同。
我的规则集,控制器,模型和视图方法如下。
知道为什么我的重新人口不起作用了吗?
感谢任何人提供的任何见解,我是CodeIgniter的新手,我可能会误解事情是如何运作的。
config/form-validation.php
验证规则:$config = array(
'create' => array (
array(
'field' => 'name',
'label' => 'product name',
'rules' => 'trim|required|min_length[5]',
),
array(
'field' => 'description',
'label' => 'product description',
'rules' => 'trim|required|min_length[5]',
),
array(
'field' => 'price',
'label' => 'product price',
'rules' => 'trim|required|min_length[1]|less_than[100000]|decimal',
),
),
);
public function create()
{
// XSS FILTER $POST OBJECT
$new_product = $this->input->post(null, true);
// SEND TO MODEL
$this->load->model("Product_model");
$product = $this->Product_model->add_product($new_product);
// IF VALIDATIONS RETURN FALSE, STORE ERRORS IN FLASH SESSION
if ($product[0] === FALSE)
{
$this->session->set_flashdata('errors', $product[1]);
redirect("/products/new");
}
// IF VALIDATION PASSES, SEND HOME
redirect("/");
}
public function add_product($product)
{
$this->load->library("form_validation");
if ($this->form_validation->run("create") === FALSE)
{
// STORE ERRORS & SHIP BACK TO CONTROLLER:
return array(FALSE, validation_errors());
}
else
{
// Success, Escape strings and insert to DB and return TRUE (or item)
}
}
(显示表单上方返回错误的页面)
<form action="./create" method="POST">
<input type="text" name="name" id="name" value="<?php echo set_value('name'); ?>">
<textarea name="description" id="description" cols="30" rows="10" value="<?php echo set_value('description'); ?>"></textarea>
<input type="number" name="price" id="price" value="<?php echo set_value('price'); ?>">
<input type="submit" value="Create">
</form>
答案 0 :(得分:1)
希望这会对您有所帮助:
在form_helper
或controller
autoload.php
在控制器中:
public function __construct()
{
parent::__construct();
$this->load->helper('form');
}
或者在autoload.php中:
$autoload['helper'] = array('form','url');
更多信息:https://www.codeigniter.com/userguide3/libraries/form_validation.html#re-populating-the-form