Использование HTTP-глаголов в маршрутах в codeigniter не загружает контроллер

#php #codeigniter #http #routes

#php #codeigniter #http #маршруты

Вопрос:

Я пытаюсь загрузить RegisterController, когда использую маршрут с post-запросом из html-формы. Когда я нажимаю кнопку отправки, RegisterController не вызывается.

Когда register.php доступ осуществляется с помощью register route с помощью метода get request index из RegisterController, но при обращении к тому же маршруту register с помощью POST-запроса ожидается загрузка метода 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>
 

Комментарии:

1. Вы можете проверить его внутри контроллера, используя if($_SERVER["REQUEST_METHOD"] == "POST") и вы можете использовать GET

2. Спасибо вам за ваш ответ… Но моя проблема в том, что когда я нажимаю кнопку register now, не загружается метод RegisterController RegisterController, чтобы я мог продолжить часть проверки формы.

3. Мы используем $route['register'] = 'Auth/RegisterController/index'; , и я надеюсь, что RegisterController должен находиться внутри папки Auth.

Ответ №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';
    }
}
?>