我创建了一个表单,并且在我提交时没有在字段中输入数据,它在空白页面上重定向,而不是在我的控制器中加载表单助手后用form_open()打开的页面。事实上我无法使用url helper的功能。我已经以另一种方式发布了这个问题,但没有得到任何解决方案。我已尝试使用codeigniter文档中的以下代码,但它不适用于我。
为什么会这样。请帮我解决一下。
控制器:
class Login extends CI_Controller{
function index()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('login_form');
}
else
{
$this->load->view('success');
}
}
}
login_form视图:
<html>
<head>
<title>My Form</title>
</head>
<body>
<?php echo validation_errors(); ?>
<?php echo form_open('login'); ?>
<h5>Username</h5>
<input type="text" name="username" value="" size="50" />
<h5>Password</h5>
<input type="text" name="password" value="" size="50" />
<h5>Password Confirm</h5>
<input type="text" name="passconf" value="" size="50" />
<h5>Email Address</h5>
<input type="text" name="email" value="" size="50" />
<div><input type="submit" value="Submit" /></div>
</form>
</body>
</html>
成功观点:
<html>
<head>
<title>My Form</title>
</head>
<body>
<h3>Your form was successfully submitted!</h3>
<p><?php echo anchor('form', 'Try it again!'); ?></p>
</body>
</html>
提前致谢...
答案 0 :(得分:0)
$ this-&gt; load-&gt; helper('form','url');
而不是 $this->load->helper(array('form', 'url'));
应该工作正常。
编辑:不确定问题是什么,但您是否尝试在/application/config/autoload.php
内加载帮助程序?
$autoload['helper'] = array('form', 'url');
答案 1 :(得分:0)
您配置.htaccess文件时,您的代码似乎是正确的。因为我尝试了你的代码所有工作正常。当我提交空白表单时,它给出验证错误。
.htaccess文件的代码
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]
答案 2 :(得分:0)
您是否在parent::__construct()
中添加了__construct()
?
class Login extends CI_Controller{
public function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
}
....
答案 3 :(得分:0)
在login
控制器中:
<?php
class Login extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper(array('form', 'url'));
}
public function index() {
$data = array();
$data['title'] = 'Login Form';
$this->load->view('login_form', $data);
}
public function save() {
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required');
if ($this->form_validation->run() != FALSE)
{
redirect('login/success');
}
else
{
$this->index();
}
}
public function success() {
$data = array();
$data['title'] = 'Successfully Submitted';
$this->load->view('success_view', $data);
}
}
?>
在登录视图页面中更改表单操作
<?php echo form_open('login/save'); ?>
或
<form method="post" action="<?php echo base_url(); ?>login/save">
注意:您可以在浏览器中运行登录表单,例如http://localhost/project_folder/login/
答案 4 :(得分:0)
可以尝试创建构造类
确保文件名为Login.php 仅限第一个字母是所有方式 案例codeigniter ucfirst有时会导致问题,如果没有像here
那样
class Login extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper('url');
$this->load->helper('form');
$this->load->library('form_validation');
}
function index() {
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
$this->form_validation->set_rules('email', 'Email', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('login_form');
}
else
{
$this->load->view('success');
}
}
}
答案 5 :(得分:0)
尝试添加此
parent::__construct();
到你的构造函数,所以
function __construct(){
parent::__construct();
}