MVC приложение на php. Часть 4

Cоздадим базовый шаблон и шаблон контента, в шаблоне контента выведем результаты запроса. Уже сможем запустить наш application. Для каждой статьи напишем экшн детальной страницы.
Для базового шаблона выбрал тему от bootstrap. Cоот-но надо будет подключить эту биб-ку.

css/bootstrap.min.css

    <link href="css/bootstrap.min.css" rel="stylesheet"/>


Итак создаем дир-ю css в корне. Там будут bootstrap.min.css style.css.
application/views/client (помним что у нас отделяется client и admin). Там создаем базовый шаблон template.php и внутренний main.php.
Шаблон можно закачать свой, только блок контента должен быть такой

application/views/client/template.php


<!-- #CONTENT# -->
                <div class="col-lg-10">
                    <?php include $this->view_path_folder . '/' . $content_view; ?>
                </div>
                <!-- #ENDCONTENT# -->

В контроллере мы подключили $content_view main. Содержимое его следующее

application/views/client/main.php


<? if(!empty($articles)): ?>
<div class="arts">
	<? foreach($articles as $art):?>
		<h1><a href="/articles/article/<?=$art['id'];?>"><?=$art['title'];?></a></h1>
		<i><?=$art['date'];?></i>
		<img src="/images/<?=$art['image'];?>" alt="">
		<p><?=$art['anons'];?></p>
	<? endforeach; ?>
</div>
<? endif;?>

Массив, переданный во вьюху, вывели в цикле.
Сформируем детальную ссылку.

/articles/article/3

Как видите, ссылка формируется просто: Контроллер/экшн/параметр.
Напишем метод для этого урла.

application/controllers/client/articles.php


    /**
     * @param array $args
     */
    function action_article(array $args = null){
        $id = (isset($args[0])? $args[0]: "");
        $model = new Model_Articles();
        $article = $model->getById($id);
        $data = array(
            'article' => $article,
            'breadcrumb' => 'Главная / Статьи / '.$article['title'],
        );
        $this->view->generate('',  $data);
    }

И сам запрос в БД

application/models/client/articles.php


    /**
     * @param $id
     * @return mixed
     */
    public function getById($id){
        $sql = 'SELECT * FROM article WHERE id = %s';
        $result = Lib_DateBase::query($sql, $id);
        $row = $result->fetch_assoc();
        return $row;
    }

Вьюха у нас подключается исходя из названия экшна, т.к. мы оставили пустым параметр.

application/views/client/article.php


<h1><?=$article['title'];?></h1>
<div class="arts">
    <article>
        <div class="post-image">
            <img src="images/<?=$article['preview_pic']?>" alt="" />
            <? if(isset($article['image'])){ ?>
                <div class="small_pics_container">
                    <a href="images/<?=$article['image']?>" class="lightbox_pic" data-lightbox="image">
                        <img width="100" src="images/<?=$article['image']?>" alt="" class="small_pic">
                    </a>
                </div>
            <? } ?>
        </div>
        <p>
            <?=$article['description']?>
        </p>
        <span class="date"><b><?=$article['date']?></b></span>
    </article>
</div>

4-й урок выложил в ветке lesson4


git checkout lesson4

Что ж, на этом все по созданию простого MVC приложения на ПХП. Далее постараюсь выложить уроки по прикручиванию админки (мы создавали отд. admin и client). Есть надежда выложить урок по созданию CMS для инт-т магазина/ блога.

Leave a comment

Your email address will not be published.


*