<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"  href="/xslt/final.xslt"?><html>
  <head>
    <title>Codeigniter Blog. Step1: Hello World</title>
    <meta name="css" content=""/>
    <meta name="js" content=""/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="id" content="4"/>
    <link rel="alternate" type="application/rss+xml" title="RSS" href="/rss.xml"/>
  </head>
  <body>
    <div class="main">
      <div class="wrap">
        <div class="L">
          <h1><a href="/">..</a> / Codeigniter Blog. Step1: Hello World</h1>
          <ol class="tags big">
            <li>
              <a href="/codeigniter-blog">codeigniter-blog</a>
            </li>
          </ol>
          <div class="myContent"><p>После прочтения общих сведения о PHP-<a href="#" title="www.phpit.net/article/ten-different-php-frameworks/" rel="nofollow" class="external">фреймворках,</a> <a href="#" title="ru.wikipedia.org/wiki/Model_View_Controller" rel="nofollow" class="external">MVC</a>, остановился на <a href="#" title="www.cakephp.org/" rel="nofollow" class="external">CakePHP</a> и <a href="#" title="www.codeigniter.com/" rel="nofollow" class="external">Codeigniter</a>. После поверхностной примерки обеих систем отсеял CakePHP за громоздкость и запутанность документации. Но в мыслях его все таки держу. Может придется перейти на него.  Чтобы все уложилось в мозге, описываю все действия по созданию блога в Codeigniter по шагам. Т.ч. все что написано ниже - исключительно для собственного пользования и не претендует на нечто большее.</p>
<p>Исходная документация может быть найдена на официальном сайте:</p>
<ul>
    <li><a href="#" title="www.codeigniter.com/" rel="nofollow" class="external">Официальный сайт</a></li>
    <li><a href="#" title="groups.google.com/group/codeigniter-ru" rel="nofollow" class="external">Русская группа на GoogleGroups</a></li>
    <li><a href="#" title="community.livejournal.com/ru_codeigniter/" rel="nofollow" class="external">Русская сообщество в ЖЖ</a>&lt;(скорее мертвое чем живое)</li>
    <li>Великолепный <a href="#" title="codeigniter.com/user_guide/" rel="nofollow" class="external">User Guede</a></li>
    <li><a href="#" title="codeigniter.com/forums/" rel="nofollow" class="external">Форум</a></li>
    <li><a href="#" title="codeigniter.com/wiki/" rel="nofollow" class="external">Wiki</a></li>
</ul>
<p>Практически все что написано ниже можно посмотреть <a href="#" title="codeigniter.com/tutorials/" rel="nofollow" class="external">на ролике</a> Но без исходников и на американском языке.</p>
<p>Ниже все шаги по созданию блога будут сопровождаться выкладкой полного кода, который можно скачать с этого сайта. Итак начинаем.</p>
<h2>1.</h2>
<p>Создаем локальный сайт для отладки http://ci (PHP5 + MySQL4).  Далее с <a href="#" title="www.codeigniter.com/" rel="nofollow" class="external">официального сайта</a> скачиваем последнюю версию Codeigniter и разворачиваем в корневой директории  локального сайта. (в корне директории system, user_guide). Запускаем в броузере свой сайт и обнаруживаем что  Codeigniter нас приветствует ("<strong>Welcome to CodeIgniter</strong>!").</p>
<h2>2.</h2>
<p>Не смотря на то, что концепция проектирования Codeigniter строится на  <a href="#" title="ru.wikipedia.org/wiki/MVC" rel="nofollow" class="external">MVC</a>, модели  здесь не будет. Незачем пока. Начнем сразу с контроллера. Все контроллеры лежат в директории /system/application/controller/ Там уже лежит предустановленный welcome.php работу которого мы видели на первом шаге. Убиваем его и создаем свой контроллер: /system/application/controller/blog.php</p>
<div>

<table class="code">
    <tbody>
        <tr>
            <td><!--php-->
            <pre class="brush: plain">&lt;?
Class Blog extends Controller
{
   function Blog()
   {
     parent::Controller();
   }
   function index()
   {
     echo "hello!";
   }
  }
?&gt;      </pre><!--/php--></td>
        </tr>
    </tbody>
</table>
</div>
<p>Запустив в броузере свой сайт http://ci обнаружим ошибку. Необходимо прописать свой контролер в качестве дефолтного. Для этого открываем файл /system/application/config/routes.php находим и исправялем строку, содержащюю $route['default_controller'] :</p>
<div>$route['default_controller'] = "blog"</div>
<p>Теперь запускаем сайт снова и наблюдаем желаемое "Hello!".</p>
<h2>3</h2>
<p>На предыдущем шаге контроллер занимается непосредственно выводом данных, чего согласно концепции <a href="#" title="ru.wikipedia.org/wiki/MVC" rel="nofollow" class="external">MVC </a>быть не должно. Поэтому необходимо разделить контроллер и предствавление VIEW (будем называть его "вьюер", а как еще?).  для этого переписываем контроллер:</p>
<div>

<table width="506" height="232" class="code">
    <tbody>
        <tr>
            <td><!--php-->
            <pre class="brush: plain">&lt;?
Class Blog extends Controller
  {
    function Blog()
     {
      parent::Controller();
     }
     function index()
     {
        $data['content']='Hello World';
        $this-&gt;      load-&gt;      view('blog_view',$data);  
     }
   }
?&gt;      </pre><!--/php--></td>
        </tr>
    </tbody>
</table>
</div>
<p>В строке $this-&gt;      load-&gt;      view('blog_view',$data); прописывается адрес вьюера, который должен быть создан в директории для вьюеров:  /system/application/views/ . Название уже определили: blog_view.php</p>
<div>

<table class="code">
    <tbody>
        <tr>
            <td><!--php-->
            <pre class="brush: plain">;&lt;html&gt; 
&lt;body&gt;      
&lt;h1&gt;      &lt;?echo $content; ?&gt;      &lt;/h1&gt;      
&lt;/body&gt;      
&lt;/html&gt;      </pre><!--/php--></td>
        </tr>
    </tbody>
</table>
</div>
<p>На этот раз все получилось почти по правилам, за исключением отсутствия модели. Это будет заготовкой для следующих шагов. Все исходные коды кладем в архив в директорию  <a href="/doc/step-by-step.zip">step1</a></p></div>
          <ol class="tags big">
            <li class="date">2007-09-03</li>
            <li>
              <a href="/codeigniter-blog">codeigniter-blog</a>
            </li>
          </ol>
          <ol class="see"/>
          <ul class="comment">
            <li id="a8" title="a0">
              <a name="Arhat" title="" rel="12.10.07"/>
              <div>Отличный пример для такого новичка, как я!<br/>Перед тем, как наткнулся на этот пост, пробовал искать примеры по CakePHP - больше промучался, чем разобрался или что-сделал... Так держать :-)</div>
            </li>
            <li id="a28" title="a0">
              <a name="&#x418;&#x433;&#x43E;&#x440;&#x44C;" title="" rel="19.02.08"/>
              <div>Супер. Мне понравилось. Продолжай.</div>
            </li>
            <li id="a29" title="a0">
              <a name="&#x415;&#x432;&#x433;&#x435;&#x43D;&#x438;&#x439;" title="" rel="24.02.08"/>
              <div>Добавьте пожалуйста ссылку на http://code-igniter.ru</div>
            </li>
            <li id="a103" title="a0">
              <a name="the_hamster" title="nsk.lug.ru" rel="23.09.08"/>
              <div>Сам блог работает на Codeigniter? :)<br/>Можно ли сделать запоминание данных комментатора, а то каждый раз вводить заново долго.</div>
            </li>
            <li id="a104" title="a103">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="" rel="23.09.08"/>
              <div>бы странно, если бы это был WordPress или Joomla.<br/>Про запоминание данных комментатора не понял. Писать в куки? Зачем?</div>
            </li>
            <li id="a234" title="a0">
              <a name="aralot" title="" rel="30.01.09"/>
              <div>опечатка:<br/>Русская сообщество в ЖЖ</div>
            </li>
            <li id="a235" title="a0">
              <a name="Anya" title="" rel="04.02.09"/>
              <div>Добрый день.<br/>Когда создаю сайт на апаче(в связке с php5), у меня выходит ошибка:<br/>load-&gt;view('blog_view',$data); } } ?&gt; <br/>404 Page Not Found<br/>А если тот же сайт на денвере, то все получается(появляется надпись Hello World)<br/>Почему Апач выдает ошибку?</div>
            </li>
            <li id="a245" title="a235">
              <a name="super_dog" title="" rel="27.02.09"/>
              <div>проверь php.ini параметр<br/> short_open_tag = On <br/>если Off - то работают оформления кода php только в таком виде:</div>
            </li>
            <li id="a272" title="a0">
              <a name="Altesack" title="blogocms.ru" rel="21.04.09"/>
              <div>В пункте 3 ссылка на статью MVC в Википедии.<br/>Статья была там удалена</div>
            </li>
            <li id="a276" title="a0">
              <a name="TRAHOMOTO" title="" rel="30.04.09"/>
              <div>ТАК! Держать! Отличная серия статей!<br/>+100500</div>
            </li>
            <li id="a341" title="a0">
              <a name="Aleks" title="video-mania.org.ua" rel="29.09.09"/>
              <div>Спасибо большое как раз начал изучать</div>
            </li>
            <li id="a345" title="a0">
              <a name="volkov9999" title="serprielt.su" rel="17.10.09"/>
              <div>Огромное спасибо за статью. CODEIGNITER -как раз то, что я искал. Надеюсь, дальше будет так же понятно как и здесь.</div>
            </li>
            <li id="a360" title="a0">
              <a name="&#x410;&#x43D;&#x442;&#x43E;&#x43D;" title="netsayta.ru" rel="01.11.09"/>
              <div>спасибо, очень помогло. спасибо, очень помогло</div>
            </li>
            <li id="a403" title="a0">
              <a name="GTAlex" title="blog.gtalex.ru/" rel="15.12.09"/>
              <div>Сенк, искал хорошие примеры.<br/>Ну чтож - поехали :)</div>
            </li>
            <li id="a414" title="a0">
              <a name="ntnj" title="www.allpol.ru" rel="21.12.09"/>
              <div>ыа как самому до такого додуматься ?</div>
            </li>
            <li id="a527" title="a0">
              <a name="Aleksander" title="www.newsewing.com" rel="15.06.10"/>
              <div>Если смотреть видео по данной теме. То довольно таки привлекательные программки используются и на мой взгляд очень удобные.<br/>Подскажите пожалуйста что за программы?<br/>Из дорого и вечного АВТОРУ РЕСПЕКТ И УВАЖУХА!!!</div>
            </li>
            <li id="a531" title="a0">
              <a name="emil" title="" rel="28.06.10"/>
              <div>Великолепный User Guide, а не Великолепный User Guede</div>
            </li>
            <li id="a538" title="a0">
              <a name="levik" title="www.levik.info" rel="20.07.10"/>
              <div>Спасибо за подробное пошаговое изложение. :)</div>
            </li>
            <li id="a591" title="a0">
              <a name="Nicolay" title="nikproject.com" rel="10.01.11"/>
              <div>Очень прекрасный пример. Есть еще видео, правда на английском на сайте tutsplus.com</div>
            </li>
            <li id="a679" title="a0">
              <a name="&#x41C;&#x430;&#x43A;&#x441;&#x438;&#x43C; &#x41F;&#x435;&#x440;&#x435;&#x43F;&#x435;&#x43B;&#x438;&#x446;&#x430;" title="" rel="22.01.12"/>
              <div>Пользуюсь этим фреймворком уже несколько лет. Удобная справка и вообще хорошо документирован.<br/>Кстати, появилось руководство пользователя на русском для версии 2.0.1<br/><u class="external" title="codeigniter.su">http://codeigniter.su</u></div>
            </li>
          </ul>
        </div>
      </div>
      <div class="R">
        <a href="/" title="&#x41D;&#x430; &#x433;&#x43B;&#x430;&#x432;&#x43D;&#x443;&#x44E;"/>
      </div>
    </div>
    <div id="li"/>
  </body>
</html>

