PHP'де MVC колдонуу
Келгиле, үйрөнгөн бардык нерселерди биргелешип колдонууну карайлы. Мисалы, биздин сайтта кандайдыр бир макалалар-барактар бар деп коёлу. Биз же бир макаланы көрсөтүүнү каалайбыз, же бардык макалаларды көрсөтүүнү каалайбыз. Келгиле, муну биздин фреймворктубузда кантип жасаса болорун карайлы.
БД'дагы таблица
Баштоо үчүн база данныхында pages таблицасын түзөлү.
Ага id,
title жана text колонкаларын кошолу. Бул
таблицаны кандайдыр бир маалыматтар менен
PhpMyAdmin аркылуу толтуралы.
Модель
Бир жазууну алуу үчүн ыкмасы бар жана бардык жазууларды алуу үчүн ыкмасы бар модельди жасайлы:
<?php
namespace Project\Models;
use \Core\Model;
class Page extends Model
{
public function getById($id)
{
return $this->findOne("SELECT * FROM pages WHERE id=$id");
}
public function getAll()
{
return $this->findMany("SELECT id, title FROM pages");
}
}
?>
Роутинг
Туура роутингти жасайлы:
<?php
use \Core\Route;
return [
new Route('/page/:id', 'page', 'one'),
new Route('/pages/', 'page', 'all'),
];
?>
Контроллер
Контроллерди жасайлы:
<?php
namespace Project\Controllers;
use \Core\Controller;
use \Project\Models\Page;
class PageController extends Controller
{
public function one($params)
{
$page = (new Page) -> getById($params['id']);
$this->title = $page['title'];
return $this->render('page/one', [
'text' => $page['text'],
'h1' => $this->title
]);
}
public function all()
{
$this->title = 'Бардык барактардын тизмеси';
$pages = (new Page) -> getAll();
return $this->render('page/all', [
'pages' => $pages,
'h1' => $this->title
]);
}
}
?>
Көрүнүштөр
one методу үчүн көрүнүш жасайлы:
<h1><?= $h1; ?></h1>
<div id="content">
<?= $text; ?>
</div>
all методу үчүн көрүнүш жасайлы:
<h1><?= $h1; ?></h1>
<div id="content">
<table>
<tr>
<th>id</th>
<th>title</th>
<th>шилтеме</th>
</tr>
<?php foreach ($pages as $page): ?>
<tr>
<td><?= $page['id']; ?></td>
<td><?= $page['title']; ?></td>
<td><a href="/page/<?= $page['id']; ?>/">баракка шилтеме</td>
</tr>
<?php endforeach; ?>
</table>
</div>
Практикалык тапшырмалар
Сиздин база данныхында продуктулар бар деп коёлу.
Ар бир продукт аталышын, баасын жана
санын, сүрөттөмөсүн камтыйт. Бир продуктту
id боюнча жана бардык продуктуларды теорияда жасалган сыяктуу чыгарыңыз.