diff options
Diffstat (limited to 'user_guide_src/source/tutorial/static_pages.rst')
-rw-r--r-- | user_guide_src/source/tutorial/static_pages.rst | 170 |
1 files changed, 0 insertions, 170 deletions
diff --git a/user_guide_src/source/tutorial/static_pages.rst b/user_guide_src/source/tutorial/static_pages.rst deleted file mode 100644 index 5daaa958f..000000000 --- a/user_guide_src/source/tutorial/static_pages.rst +++ /dev/null @@ -1,170 +0,0 @@ -############ -Static pages -############ - -**Note:** This tutorial assumes you've downloaded CodeIgniter and -:doc:`installed the framework <../installation/index>` in your -development environment. - -The first thing you're going to do is set up a **controller** to handle -static pages. A controller is simply a class that helps delegate work. -It is the glue of your web application. - -For example, when a call is made to: - - http://example.com/news/latest/10 - -We might imagine that there is a controller named "news". The method -being called on news would be "latest". The news method's job could be to -grab 10 news items, and render them on the page. Very often in MVC, -you'll see URL patterns that match: - - http://example.com/[controller-class]/[controller-method]/[arguments] - -As URL schemes become more complex, this may change. But for now, this -is all we will need to know. - -Create a file at *application/controllers/Pages.php* with the following -code. - -:: - - <?php - class Pages extends CI_Controller { - - public function view($page = 'home') - { - } - } - -You have created a class named ``Pages``, with a view method that accepts -one argument named ``$page``. The ``Pages`` class is extending the -``CI_Controller`` class. This means that the new pages class can access the -methods and variables defined in the ``CI_Controller`` class -(*system/core/Controller.php*). - -The **controller is what will become the center of every request** to -your web application. In very technical CodeIgniter discussions, it may -be referred to as the *super object*. Like any php class, you refer to -it within your controllers as ``$this``. Referring to ``$this`` is how -you will load libraries, views, and generally command the framework. - -Now you've created your first method, it's time to make some basic page -templates. We will be creating two "views" (page templates) that act as -our page footer and header. - -Create the header at *application/views/templates/header.php* and add -the following code: - -:: - - <html> - <head> - <title>CodeIgniter Tutorial</title> - </head> - <body> - - <h1><?php echo $title; ?></h1> - -The header contains the basic HTML code that you'll want to display -before loading the main view, together with a heading. It will also -output the ``$title`` variable, which we'll define later in the controller. -Now, create a footer at *application/views/templates/footer.php* that -includes the following code: - -:: - - <em>© 2015</em> - </body> - </html> - -Adding logic to the controller ------------------------------- - -Earlier you set up a controller with a ``view()`` method. The method -accepts one parameter, which is the name of the page to be loaded. The -static page templates will be located in the *application/views/pages/* -directory. - -In that directory, create two files named *home.php* and *about.php*. -Within those files, type some text − anything you'd like − and save them. -If you like to be particularly un-original, try "Hello World!". - -In order to load those pages, you'll have to check whether the requested -page actually exists: - -:: - - public function view($page = 'home') - { - if ( ! file_exists(APPPATH.'views/pages/'.$page.'.php')) - { - // Whoops, we don't have a page for that! - show_404(); - } - - $data['title'] = ucfirst($page); // Capitalize the first letter - - $this->load->view('templates/header', $data); - $this->load->view('pages/'.$page, $data); - $this->load->view('templates/footer', $data); - } - -Now, when the page does exist, it is loaded, including the header and -footer, and displayed to the user. If the page doesn't exist, a "404 -Page not found" error is shown. - -The first line in this method checks whether the page actually exists. -PHP's native ``file_exists()`` function is used to check whether the file -is where it's expected to be. ``show_404()`` is a built-in CodeIgniter -function that renders the default error page. - -In the header template, the ``$title`` variable was used to customize the -page title. The value of title is defined in this method, but instead of -assigning the value to a variable, it is assigned to the title element -in the ``$data`` array. - -The last thing that has to be done is loading the views in the order -they should be displayed. The second parameter in the ``view()`` method is -used to pass values to the view. Each value in the ``$data`` array is -assigned to a variable with the name of its key. So the value of -``$data['title']`` in the controller is equivalent to ``$title`` in the -view. - -Routing -------- - -The controller is now functioning! Point your browser to -``[your-site-url]index.php/pages/view`` to see your page. When you visit -``index.php/pages/view/about`` you'll see the about page, again including -the header and footer. - -Using custom routing rules, you have the power to map any URI to any -controller and method, and break free from the normal convention: -``http://example.com/[controller-class]/[controller-method]/[arguments]`` - -Let's do that. Open the routing file located at -*application/config/routes.php* and add the following two lines. -Remove all other code that sets any element in the ``$route`` array. - -:: - - $route['default_controller'] = 'pages/view'; - $route['(:any)'] = 'pages/view/$1'; - -CodeIgniter reads its routing rules from top to bottom and routes the -request to the first matching rule. Each rule is a regular expression -(left-side) mapped to a controller and method name separated by slashes -(right-side). When a request comes in, CodeIgniter looks for the first -match, and calls the appropriate controller and method, possibly with -arguments. - -More information about routing can be found in the URI Routing -:doc:`documentation <../general/routing>`. - -Here, the second rule in the ``$routes`` array matches **any** request -using the wildcard string ``(:any)``. and passes the parameter to the -``view()`` method of the ``Pages`` class. - -Now visit ``index.php/about``. Did it get routed correctly to the ``view()`` -method in the pages controller? Awesome! |