#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';
}
}
?>