Lynda. Up and Running with PHP CodeIgniter / Section 4 -2. Creating a form to add magazines

  • 10 years ago
Creating a form to add magazines

In order to implement a validating form in CodeIgniter, I'll need three things. First, a controller function that contains the form logic, like processing submitted data. Second, a view that contains the form itself, including a place for displaying messages. And finally, a view for a message that will be shown upon successful submission. Once I have those pieces, I can then add the validation logic. I'm going to create a forum to add magazines and I'll start with the controller. Within Net beans open the magazine controller.

Let's add a new method for adding a magazine called add public function add, give it a little bit of documentation. Add a magazine. One of the parts of the magazine is the publication. While it'd be great if users could remember data base identifiers, they tend to get lazy and need all the help they can get. Therefore, I'll populate the list of available publications on their behalf using the publication model. Start by loading the model, populate publications.

This load model, and I'll give it the publication as the argument. Then I'm going to use the get method, which returns an array of populated models. Publications equal this, publication get. Now that I have the data, I'll populate form options. Publication, form, options equals array, foreach the publications, as ID, publication. Assign the option by ID to the publication name.

So publication, form options, ID equals publication. Publication_name. When complete, load a view using this, load view. With a name of magazine_form, we'll create the view in a moment. I'm going to pass it an array. Containing one key, publication_form_options assigned to the $publication_form_options.

Remember to add the semicolon and save. I'll add the validation logic later. Next I'll create the view for the form. So I'll navigate to the Views Folder and create a new file called magazine_form. Clear out the content, then let's create a form in good old fashioned HTML. Form, method equals post. I'll start with a div, and then a label for publication, ID with a more human readable publication name. Start a select tag with a name of publication ID. Select, name equals publication ID.

Now for a little PHP. Let's iterate through the publication form option, for each publication form options as publication id, publication name. I'm going to echo an option with a value of the HTML. Escaped publication ID. Followed by the html escape publication name and close the option. Close out the PHP tag at the end.

Make sure that the select is closed and the DIV. Hm, that seems like a lot of work for a lowly select list. I wonder if there is a faster way. Anyway, let's continue with the input text for the issue number. Div, then label for equals issue underscore number. For the human readable name issue number. So, for the input. Type equals text, name is issue number and the value. Right now we don't need any default value, so we'll just leave it blank. And close out the div.

The last bit of data that I'll need is the date that the issue was published. So, div then label for issue date publication and then date published, human readable label. Then again this will be input type equals text, the name is issue date publication and the value is empty. Was that the div? Finally I'll add a submit button.

Div input type equals submit, and the value, it's just going to say save. Close out the div and the form. Save the magazine form. One more piece is needed. The success message. Create a new view named Magazine_form_success.php. I'll just say div class equals alert and then alert-success say magazine created and close the div. Save the success farm.

Let's see how it looks so far by switching to the browser and navigating to index.php magazine add. I see a very bare bones form with a publication name select list. Text input for issue number, and date published, and a Save button. Type issue three into issue number, and click Save. And the input has disappeared. We have no logic yet, so it's actually performing perfectly well. It's not very useful, on the other hand, so let's add some validation using the Form Validation library.

Recommended