【问题标题】:Using HTTP verbs in routes in codeigniter is not loading the controller在 codeigniter 的路由中使用 HTTP 动词不会加载控制器
【发布时间】: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


【解决方案1】:

让我为你写完整的代码修改。

Route.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

//Login and Register for user and Admin

$route['register'] = 'Auth/RegisterController/index';
$route['register'] = 'Auth/RegisterController/register';

Auth/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()
    {
        if($_SERVER["REQUEST_METHOD"] == "GET"){
            // $this->load->view('template/header.php');
            return $this->load->view('auth/register.php');
            // $this->load->view('template/footer.php');
        }
        return 'Only GET Method Allowed';
    }


    public function register()
    {
        
        if($_SERVER["REQUEST_METHOD"] == "POST"){
            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"; 
          }
       }
        return 'Only POST Method Allowed';
    }
}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    相关资源
    最近更新 更多