diff options
author | Andrey Andreev <narf@devilix.net> | 2015-05-21 14:13:47 +0200 |
---|---|---|
committer | Andrey Andreev <narf@devilix.net> | 2015-05-21 14:13:47 +0200 |
commit | 3a4f9cd467b23ca5aeb93d20214685c86c0d520c (patch) | |
tree | 7861a9c8d08789e050de39d152dd367d0328d611 /user_guide_src | |
parent | b8cd5e657363795f127ae5e02e69972627b3fe9c (diff) |
[ci skip] Update tutorial
Related: #3866
Diffstat (limited to 'user_guide_src')
-rw-r--r-- | user_guide_src/source/tutorial/news_section.rst | 54 | ||||
-rw-r--r-- | user_guide_src/source/tutorial/static_pages.rst | 53 |
2 files changed, 55 insertions, 52 deletions
diff --git a/user_guide_src/source/tutorial/news_section.rst b/user_guide_src/source/tutorial/news_section.rst index 688f2cb19..286d620dc 100644 --- a/user_guide_src/source/tutorial/news_section.rst +++ b/user_guide_src/source/tutorial/news_section.rst @@ -15,10 +15,9 @@ should be placed in a model, so they can easily be reused later. Models are the place where you retrieve, insert, and update information in your database or other data stores. They represent your data. -Open up the application/models directory and create a new file called -News_model.php and add the following code. Make sure you've configured -your database properly as described -:doc:`here <../database/configuration>`. +Open up the *application/models/* directory and create a new file called +*News_model.php* and add the following code. Make sure you've configured +your database properly as described :doc:`here <../database/configuration>`. :: @@ -37,8 +36,8 @@ library. This will make the database class available through the ``$this->db`` object. Before querying the database, a database schema has to be created. -Connect to your database and run the SQL command below. Also add some -seed records. +Connect to your database and run the SQL command below (MySQL). +Also add some seed records. :: @@ -75,7 +74,7 @@ following code to your model. With this code you can perform two different queries. You can get all news records, or get a news item by its `slug <#>`_. You might have -noticed that the $slug variable wasn't sanitized before running the +noticed that the ``$slug`` variable wasn't sanitized before running the query; :doc:`Query Builder <../database/query_builder>` does this for you. Display the news @@ -83,9 +82,9 @@ Display the news Now that the queries are written, the model should be tied to the views that are going to display the news items to the user. This could be done -in our pages controller created earlier, but for the sake of clarity, a -new "news" controller is defined. Create the new controller at -application/controllers/News.php. +in our ``Pages`` controller created earlier, but for the sake of clarity, +a new ``News`` controller is defined. Create the new controller at +*application/controllers/News.php*. :: @@ -96,6 +95,7 @@ application/controllers/News.php. { parent::__construct(); $this->load->model('news_model'); + $this->load->helper('url_helper'); } public function index() @@ -113,11 +113,13 @@ Looking at the code, you may see some similarity with the files we created earlier. First, the ``__construct()`` method: it calls the constructor of its parent class (``CI_Controller``) and loads the model, so it can be used in all other methods in this controller. +It also loads a collection of :doc:`URL Helper <../helpers/url_helper>` +functions, because we'll use one of them in a view later. -Next, there are two methods to view all news items and one for a -specific news item. You can see that the $slug variable is passed to the -model's method in the second method. The model is using this slug to -identify the news item to be returned. +Next, there are two methods to view all news items and one for a specific +news item. You can see that the ``$slug`` variable is passed to the model's +method in the second method. The model is using this slug to identify the +news item to be returned. Now the data is retrieved by the controller through our model, but nothing is displayed yet. The next thing to do is passing this data to @@ -136,9 +138,9 @@ the views. } The code above gets all news records from the model and assigns it to a -variable. The value for the title is also assigned to the $data['title'] +variable. The value for the title is also assigned to the ``$data['title']`` element and all data is passed to the views. You now need to create a -view to render the news items. Create application/views/news/index.php +view to render the news items. Create *application/views/news/index.php* and add the next piece of code. :: @@ -151,20 +153,20 @@ and add the next piece of code. <div class="main"> <?php echo $news_item['text']; ?> </div> - <p><a href="<?php echo $news_item['slug']; ?>">View article</a></p> + <p><a href="<?php echo site_url('news/'.$news_item['slug']); ?>">View article</a></p> <?php endforeach; ?> Here, each news item is looped and displayed to the user. You can see we -wrote our template in PHP mixed with HTML. If you prefer to use a -template language, you can use CodeIgniter's :doc:`Template +wrote our template in PHP mixed with HTML. If you prefer to use a template +language, you can use CodeIgniter's :doc:`Template Parser <../libraries/parser>` class or a third party parser. The news overview page is now done, but a page to display individual news items is still absent. The model created earlier is made in such way that it can easily be used for this functionality. You only need to add some code to the controller and create a new view. Go back to the -news controller and update ``view()`` with the following: +``News`` controller and update ``view()`` with the following: :: @@ -198,12 +200,12 @@ The only things left to do is create the corresponding view at Routing ------- -Because of the wildcard routing rule created earlier, you need an -extra route to view the controller that you just made. Modify your -routing file (application/config/routes.php) so it looks as follows. -This makes sure the requests reaches the news controller instead of -going directly to the pages controller. The first line routes URI's with -a slug to the view method in the news controller. +Because of the wildcard routing rule created earlier, you need an extra +route to view the controller that you just made. Modify your routing file +(*application/config/routes.php*) so it looks as follows. +This makes sure the requests reaches the ``News`` controller instead of +going directly to the ``Pages`` controller. The first line routes URI's +with a slug to the ``view()`` method in the ``News`` controller. :: diff --git a/user_guide_src/source/tutorial/static_pages.rst b/user_guide_src/source/tutorial/static_pages.rst index e948d3011..66621471e 100644 --- a/user_guide_src/source/tutorial/static_pages.rst +++ b/user_guide_src/source/tutorial/static_pages.rst @@ -37,24 +37,24 @@ code. } } -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). +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. +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. +Create the header at *application/views/templates/header.php* and add +the following code: :: @@ -68,13 +68,13 @@ following code. 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 +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>© 2014</em> + <em>© 2015</em> </body> </html> @@ -83,12 +83,12 @@ 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/ +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 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: @@ -122,20 +122,21 @@ 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. +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. +``$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 +``[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 @@ -143,8 +144,8 @@ 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. +*application/config/routes.php* and add the following two lines. +Remove all other code that sets any element in the ``$route`` array. :: @@ -161,9 +162,9 @@ 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. +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()`` +Now visit ``index.php/about``. Did it get routed correctly to the ``view()`` method in the pages controller? Awesome! |