Implementing Controller Logic and Business Rules in CodeIgniter

In the CodeIgniter framework, controllers play a crucial role in handling user requests and implementing the business logic of an application. They act as intermediaries between the model and the view, receiving inputs from the user and performing the necessary operations before sending the response. In this article, we will explore how to effectively implement controller logic and business rules in CodeIgniter.

Creating a Controller

To create a controller in CodeIgniter, you need to follow a naming convention and place it within the application/controllers directory. The name of the controller file should be in the format {ControllerName}.php, with the controller class inside inheriting from the CI_Controller class.

For example, let's say we want to create a controller called User:

// application/controllers/User.php

defined('BASEPATH') or exit('No direct script access allowed');

class User extends CI_Controller
{
    public function index()
    {
        // Controller logic goes here
    }
}

Handling User Requests

Controllers in CodeIgniter are responsible for handling user requests that are routed to them. The routing mechanism directs the request to the appropriate controller method based on the URL structure.

In the above example, the index() method acts as the default method for the User controller. It will be called when the URL matches the pattern http://example.com/index.php/user. You can also define additional methods in the controller to handle specific functionalities of your application.

// application/controllers/User.php

defined('BASEPATH') or exit('No direct script access allowed');

class User extends CI_Controller
{
    public function index()
    {
        // Controller logic for the index page
    }

    public function create()
    {
        // Controller logic to handle user registration
    }

    public function update($id)
    {
        // Controller logic to update user information
    }
}

In the example above, there are two additional methods create() and update() defined to handle user registration and updating user information, respectively. These methods can be accessed using appropriate URLs, such as http://example.com/index.php/user/create or http://example.com/index.php/user/update/1.

Implementing Business Rules

Controller logic often involves implementing business rules that govern the behavior and actions of an application. These rules can validate user inputs, interact with the corresponding models, and orchestrate the flow of data between the models and views.

Let's take an example where we have a user registration form and want to implement some business rules:

// application/controllers/User.php

defined('BASEPATH') or exit('No direct script access allowed');

class User extends CI_Controller
{
    public function create()
    {
        // Fetch user inputs from the registration form
        $name = $this->input->post('name');
        $email = $this->input->post('email');
        $password = $this->input->post('password');

        // Check if the email already exists in the database
        if ($this->user_model->emailExists($email)) {
            // Display an error message to the user
            $this->session->set_flashdata('error', 'Email already exists');

            // Redirect the user back to the registration form
            redirect('user/create');
        }

        // Create a new user in the database
        $userId = $this->user_model->createUser($name, $email, $password);

        // Display a success message to the user
        $this->session->set_flashdata('success', 'User registration successful');

        // Redirect the user to the login page
        redirect('auth/login');
    }
}

In the above example, we first fetch the user inputs from the registration form. Then, we check if the email entered by the user already exists in the database using a method emailExists() from the user_model model. If the email exists, we set an error flash message and redirect the user back to the registration form.

If the email doesn't exist, we create a new user in the database using the createUser() method from the user_model model. We then set a success flash message and redirect the user to the login page.

This is just a simple example, and you can implement more complex business rules based on your application's requirements.

Conclusion

Implementing controller logic and business rules is an essential part of developing an application using CodeIgniter. Controllers handle user requests, process inputs, interact with models, and decide how to respond to the user. By following the conventions and practices explained in this article, you can effectively implement robust controller logic and business rules in your CodeIgniter projects.


noob to master © copyleft