MVC приложение на php. Часть 4
Cоздадим базовый шаблон и шаблон контента, в шаблоне контента выведем результаты запроса. Уже сможем запустить наш application. Для каждой статьи напишем экшн детальной страницы.
Для базового шаблона выбрал тему от bootstrap. Cоот-но надо будет подключить эту биб-ку.
<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