Hello I have a controlller that should redirect or return to a view but it doesnt it stays at same view but with blank content.
PHP Code:
public function register($validators = [])
{
$data=$this->data;
if (!$this->session->has('loggedIn') || $this->session->get('loggedIn') === null) { // 'loggedIn' is not set or is null
//$this->validation = \Config\Services::validation();
$this->validation = service('validation');
if ($this->request->getMethod() === 'post') {
$this->validation->setRules([
'username' => 'required|alpha_numeric|min_length[3]|max_length[20]|is_unique[Users.username]',
'email' => 'required|valid_email|is_unique[Users.email]',
'password' => 'required|min_length[1]',
'password2' => 'required|min_length[1]|matches[password]',
]);
$data['title'] = 'Sign Up';
$data['staticPages'] = $this->staticPages;
$data['validation'] = $this->validation;
$data['seo_title'] = 'Register';
$data['seo_desc'] = 'Register';
$data['tags'] = ['Register'];
$data['Registered_Message']='Thank you for registering, please login.';
if (!$this->validate($this->validation->getRules())) {
$data['validation'] = $this->validation;
return view('users/register', $data);
}
else{
// register user to db
$this->registerUser();
}
}
else {
$data['title'] = 'Sign Up';
$data['staticPages'] = $this->staticPages;
$data['errors'] = $this->validation->getErrors();
$data['seo_title'] = 'Register';
$data['seo_desc'] = 'Register';
$data['tags'] = ['Register'];
$data['Registered_Message']='Thank you for registering, please login.';
return view('users/register', $data);
}
}
else {
$data['title'] = 'Home';
$data['seo_title'] = 'Home';
$data['seo_desc'] = 'Home';
$data+=$this->data;
return view('home', $data);
}
}
The registerUSer that is called after validation is :
PHP Code:
*/
public function registerUser() {
$data = $this->data;
$data['seo_title']="login";
log_message('info', 'registerUser function called');
$username = $this->request->getPost('username');
$email = $this->request->getPost('email');
$password = $this->request->getPost('password');
$userData = [
'username' => $username,
'email' => $email,
'password' => password_hash($password, PASSWORD_DEFAULT),
];
// Insert the user data into the database
$insertedId = $this->user->createUser($userData);
if ($insertedId) {
// User created successfully
$this->session->setFlashdata('success', 'User registration successful! Please login.');
return view('users/login', $data);
} else {
// User creation failed (handle errors)
log_message('error', 'Failed to create user');
return redirect()->to('register'); // Redirect back to register with error handling in view (optional)
}
}
The issue is that after
PHP Code:
$insertedId is TRUE, return view('users/login', $data);
does not load the view . I have also tried return redirect()->to(site_url('/login'));return redirect()->to(site_url('/login'));
The routes are
$routes->get('login', 'UsersController::login');
$routes->post('login', 'UsersController::login/$i');
$routes->post('users/registerUser', 'UsersController::registerUser');
$routes->post('register', 'UsersController::register');
$routes->get('register', 'UsersController::register');
Any ideas of what can be causing this issue?