diff options
Diffstat (limited to 'user_guide_src/source/general/views.rst')
-rw-r--r-- | user_guide_src/source/general/views.rst | 213 |
1 files changed, 0 insertions, 213 deletions
diff --git a/user_guide_src/source/general/views.rst b/user_guide_src/source/general/views.rst deleted file mode 100644 index 2fc0cb2ca..000000000 --- a/user_guide_src/source/general/views.rst +++ /dev/null @@ -1,213 +0,0 @@ -##### -Views -##### - -A view is simply a web page, or a page fragment, like a header, footer, -sidebar, etc. In fact, views can flexibly be embedded within other views -(within other views, etc., etc.) if you need this type of hierarchy. - -Views are never called directly, they must be loaded by a -:doc:`controller <controllers>`. Remember that in an MVC framework, the -Controller acts as the traffic cop, so it is responsible for fetching a -particular view. If you have not read the -:doc:`Controllers <controllers>` page you should do so before -continuing. - -Using the example controller you created in the -:doc:`controller <controllers>` page, let's add a view to it. - -Creating a View -=============== - -Using your text editor, create a file called blogview.php, and put this -in it:: - - <html> - <head> - <title>My Blog</title> - </head> - <body> - <h1>Welcome to my Blog!</h1> - </body> - </html> - -Then save the file in your *application/views/* directory. - -Loading a View -============== - -To load a particular view file you will use the following method:: - - $this->load->view('name'); - -Where name is the name of your view file. - -.. note:: The .php file extension does not need to be specified - unless you use something other than .php. - -Now, open the controller file you made earlier called Blog.php, and -replace the echo statement with the view loading method:: - - <?php - class Blog extends CI_Controller { - - public function index() - { - $this->load->view('blogview'); - } - } - -If you visit your site using the URL you did earlier you should see your -new view. The URL was similar to this:: - - example.com/index.php/blog/ - -Loading multiple views -====================== - -CodeIgniter will intelligently handle multiple calls to -``$this->load->view()`` from within a controller. If more than one call -happens they will be appended together. For example, you may wish to -have a header view, a menu view, a content view, and a footer view. That -might look something like this:: - - <?php - - class Page extends CI_Controller { - - public function index() - { - $data['page_title'] = 'Your title'; - $this->load->view('header'); - $this->load->view('menu'); - $this->load->view('content', $data); - $this->load->view('footer'); - } - - } - -In the example above, we are using "dynamically added data", which you -will see below. - -Storing Views within Sub-directories -==================================== - -Your view files can also be stored within sub-directories if you prefer -that type of organization. When doing so you will need to include the -directory name loading the view. Example:: - - $this->load->view('directory_name/file_name'); - -Adding Dynamic Data to the View -=============================== - -Data is passed from the controller to the view by way of an **array** or -an **object** in the second parameter of the view loading method. Here -is an example using an array:: - - $data = array( - 'title' => 'My Title', - 'heading' => 'My Heading', - 'message' => 'My Message' - ); - - $this->load->view('blogview', $data); - -And here's an example using an object:: - - $data = new Someclass(); - $this->load->view('blogview', $data); - -.. note:: If you use an object, the class variables will be turned - into array elements. - -Let's try it with your controller file. Open it add this code:: - - <?php - class Blog extends CI_Controller { - - public function index() - { - $data['title'] = "My Real Title"; - $data['heading'] = "My Real Heading"; - - $this->load->view('blogview', $data); - } - } - -Now open your view file and change the text to variables that correspond -to the array keys in your data:: - - <html> - <head> - <title><?php echo $title;?></title> - </head> - <body> - <h1><?php echo $heading;?></h1> - </body> - </html> - -Then load the page at the URL you've been using and you should see the -variables replaced. - -Creating Loops -============== - -The data array you pass to your view files is not limited to simple -variables. You can pass multi dimensional arrays, which can be looped to -generate multiple rows. For example, if you pull data from your database -it will typically be in the form of a multi-dimensional array. - -Here's a simple example. Add this to your controller:: - - <?php - class Blog extends CI_Controller { - - public function index() - { - $data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands'); - - $data['title'] = "My Real Title"; - $data['heading'] = "My Real Heading"; - - $this->load->view('blogview', $data); - } - } - -Now open your view file and create a loop:: - - <html> - <head> - <title><?php echo $title;?></title> - </head> - <body> - <h1><?php echo $heading;?></h1> - - <h3>My Todo List</h3> - - <ul> - <?php foreach ($todo_list as $item):?> - - <li><?php echo $item;?></li> - - <?php endforeach;?> - </ul> - - </body> - </html> - -.. note:: You'll notice that in the example above we are using PHP's - alternative syntax. If you are not familiar with it you can read about - it :doc:`here <alternative_php>`. - -Returning views as data -======================= - -There is a third **optional** parameter lets you change the behavior of -the method so that it returns data as a string rather than sending it -to your browser. This can be useful if you want to process the data in -some way. If you set the parameter to TRUE (boolean) it will return -data. The default behavior is false, which sends it to your browser. -Remember to assign it to a variable if you want the data returned:: - - $string = $this->load->view('myfile', '', TRUE);
\ No newline at end of file |