【发布时间】:2021-02-15 13:07:28
【问题描述】:
当我使用带有来自 html 表单的发布请求的路由时,我正在尝试加载 RegisterController。当我单击提交按钮时,不会调用 RegisterController。
当使用 register 路由访问 register.php 时,从 RegisterController 获取请求索引方法被加载,但是当使用 POST 请求访问相同的 register 路由时,它期望加载 register 方法。但它不起作用。
这是 routes.php 文件
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
//Login and Register for user and Admin
$route['register']['GET'] = 'Auth/RegisterController/index';
$route['register']['POST'] = 'Auth/RegisterController/register';
RegisterController.php 文件
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class RegisterController extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->helper('form');
$this->load->library('form_validation');
$this->load->helper('url');
}
public function index()
{
// $this->load->view('template/header.php');
$this->load->view('auth/register.php');
// $this->load->view('template/footer.php');
}
public function register()
{
echo "i am inside register method of the register controller";
$this->form_validation-> set_rules('first_name','First Name','trim|required|alpha');
$this->form_validation-> set_rules('last_name','Last Name','trim|required|alpha');
$this->form_validation-> set_rules('email','Email ID','trim|required|valid_email|is_unique[users.email]');
$this->form_validation-> set_rules('password','Password','trim|required|mdS');
$this->form_validation-> set_rules('cpassword','Confirm Password','trim|required|matches[password]');
if($this->form_validation->run()==False)
{
//failed
$this->index();
}
else
{
echo "I am here";
}
}
}
?>
这里是 Register.php 文件
<!DOCTYPE html>
<html lang="en">
<head>
<title>Register Page</title>
</head>
<body>
<h4>Register Page</h4>
<form action="<?php echo base_url('register') ?>" method="POST">
<label for="">First Name</label>
<input type="text" name="first_name">
<small><?php echo form_error('first_name'); ?></small>
<br>
<label for="">Last Name</label>
<input type="text" name="last_name">
<small><?php echo form_error('last_name'); ?></small>
<br>
<label for="">Email address</label>
<input type="email" name="email">
<small><?php echo form_error('email'); ?></small>
<br>
<label for="">Password</label>
<input type="password" name="password">
<small><?php echo form_error('password'); ?></small>
<br>
<label for="">Confirm Password</label>
<input type="password" name="cpassword">
<small><?php echo form_error('cpassword'); ?></small>
<br>
<button type="submit">Register Now</button>
</form>
</body>
</html>
【问题讨论】:
-
您可以在控制器内部验证它,使用
if($_SERVER["REQUEST_METHOD"] == "POST"),也可以使用GET -
感谢您的回复...但是我的问题是当我单击立即注册按钮时,它没有加载 RegisterController 的注册方法,因此我可以继续进行表单验证部分。
-
使用
$route['register'] = 'Auth/RegisterController/index';我希望RegisterController 必须在Auth 文件夹中。
标签: php codeigniter http routes