我试图验证我的input
字段之一,但它似乎不适用于我的字段。我尝试使用session->flashdata
和redirect
将错误发送到my_view.php
页面以发送session
这是我的代码:
my_view.php
<body>
<?php
$field_error = $this->session->flashdata('fields');
?>
<h1>HELLO WORLD</h1>
<input type="text" name="login[name]" class="fname" placeholder="First">
<?php if (isset($field_error['login[name]'])) { ?>
<span class="help-block"><?php echo $field_error['login[name]']; ?></span>
<?php } ?>
<br>
<button id="send">Save</button>
</body>
my_controller.php
public function __construct(){
parent::__construct();
$this->load->model('my_model');
$this->load->helper('url');
$this->load->library('session');
$this->load->library('form_validation');
}
public function index()
{
$this->load->view('my_view');
}
$this->form_validation->set_rules('login[name]', 'First Name', 'required');
if ($this->form_validation->run() == FALSE){
$this->session->set_flashdata('fields', $this->form_validation->error_array());
redirect(site_url('my_controller'));
exit();
}
答案 0 :(得分:0)
加载目标视图,如下所示:
$this->load->view('any_directory/view_name');
或者
$this->load->view('my_view');
答案 1 :(得分:0)
由于您使用的是redirect(),因此将刷新flashdata。您可以使用$this->load->view('my_view');
或者下面描述的方法:
在控制器的验证中执行此操作:in your if condition.
$this->form_validation->set_rules('login[name]', 'First Name', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('my_view'); //removing your flashdata,codeigniter provides it's validation method to show errors in your view.
}
并在视图,
中<body>
<h1>HELLO WORLD</h1>
<input type="text" name="login[name]" class="fname" placeholder="First">
<?= validation_errors(); ?>
<br>
<button id="send">Save</button>
</body>
答案 2 :(得分:0)
不讨论您的实施,您的主要问题是您的表单代码需要包含在<form> </form>
中或使用表单助手<?php echo form_open(); ?>
<body>
<?php $field_error = $this->session->flashdata('fields');
?>
<h1>HELLO WORLD</h1>
<form method="post">
<input type="text" name="login[name]" class="fname" placeholder="First">
<?php if (isset($field_error['login[name]'])) { ?>
<span class="help-block"><?php echo $field_error['login[name]']; ?></span>
<?php } ?>
<br>
<button id="send">Save</button>
</form>
</body>
您可以通过对var_dump()
和print_r()
等内容执行$this->input->post()
或$this->session->flashdata()
来发现此类事情;所以你实际上可以看到发生了什么......
在这种情况下,您需要能够使用上述内容进行调试......
答案 3 :(得分:0)
**You should use**
codeigniter redirect in controller
redirect(url, 'refresh');
and
use the form_error method to your view
<?php echo form_error('field name','<span class="help-block form-error">', '</span>'); ?>