Nifty time-saving form / validation function for CodeIgniter

Note: This needs to be seriously tweaked to work better with more complex model functions.  I am leaving this up but understand that for now it only handles one-variable model functions easily.

I’m lazy when I code. By lazy I mean I detest retyping the same several codes of line multiple times throughout an app. My motto is (usually) if I have to use a/several line(s) more than 3 times it becomes a function so I can use and re-use it.

If you’re like me, when you use the form features in CI you set up the controller part like so:


if($this->validation->run() == FALSE) {
$data["variable"] = "something";
$this->load->view("view_template",$data);
} else {
$process = $this->model_name->model_function($this->validation->variable);
//Success / error message here
}

That (extremely simple) example uses only 7 lines of code. However, if you have an add + edit function in each controller and you have 10 controllers, that’s (7+7)*10 = 140 lines that are really similar. I hear a function calling my name!

With the function I created I took those six lines of code and reduced them to this:
$this->library_name->validation_run("model_name","model_function",$this->validation->variable,"view_template",array("variable"=>"something");

Pretty sweet, no? 🙂

Below is the function. I am assuming you have a basic to intermediate understanding of CI, so I won’t go into a lot of depth explaining it. I placed validation_run in the custom forms library I use. You can use it in your own custom library or create a library out of it. If you put it in your own library, ensure that the method you are using to reference CI functions is reflected in validation_run ($this->obj,$ci,$this->ci, etc). Also ensure that the Validation and Model are loaded prior to calling validation_run.

function validation($model_name,$model_function,$model_function_variable,$layout_template,$data_array=NULL)
{

if($this->ci->validation->run() == FALSE) {
//This allows the view to be called with or without parameters.
if(!is_null($data_array)) {
$this->ci->load->view($layout_template,$data_array);
} else {
$this->ci->load->view($layout_template);
}
} else {
$process = $this->ci->$model_name->$model_function(
$model_function_variable);
//Use your favorite redirection method here
}
}

To use it, you’d simply call

$this->library_name->validation_run("model_name","model_function",$this->validation->variable,"view_template",array("variable"=>"something");

For better readability you could do alternatively do it this way:

$this->library_name->validation_run(
"model_name",
"model_function",
$this->validation->variable,
"view_template",
array("variable"=>"something"
);

Of course, you’d replace library_name with the library name you called it from.

Not everyone will have a use for this function; it’s really only good for simple validation “running” . However, it’s saved me so much time coding that I had to share it 🙂

Enjoy!

Advertisements
Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: