در فریمورک فلر، کنترلرها مسئول مدیریت منطق اصلی برنامه و بازگرداندن پاسخ مناسب به درخواستهای ورودی هستند. کنترلرها در پوشه Controllers/
قرار میگیرند و معمولاً از کلاس پایه BaseController
ارثبری میکنند.
در اینجا نمونهای از یک کنترلر ساده آورده شده است:
<?php
namespace Controllers;
class Home extends BaseController
{
public function index()
{
$data = ['title' => 'خوش آمدید'];
return $this->latte('page/index', $data);
}
public function portfolio()
{
return $this->latte('page/portfolio');
}
}
در این نمونه:
index()
یک صفحه خوشامدگویی را نمایش میدهد.portfolio()
صفحه نمونهکارها را نمایش میدهد.برای اتصال کنترلرها به مسیرهای خاص از سیستم مسیریابی استفاده میشود. برای مثال:
$router->get('/','Home@index');
$router->get('/portfolio','Home@portfolio');
میدلورها لایههایی از کد هستند که قبل از رسیدن درخواست به کنترلر اجرا میشوند. آنها میتوانند برای اعتبارسنجی دسترسی، احراز هویت، لاگگیری و بسیاری وظایف دیگر استفاده شوند.
در زیر یک نمونه ساده از یک میدلور برای فیلتر کردن دسترسی به صفحات خاص آورده شده است:
<?php
namespace Middlewares;
class AdminFilter
{
public static function filter()
{
if (empty($_SESSION['id'])) {
die("You don't have access");
}
}
}
این میدلور بررسی میکند که آیا شناسه کاربری در جلسه (Session) وجود دارد یا خیر. اگر نباشد، دسترسی مسدود میشود.
برای اتصال یک میدلور به یک یا چند مسیر میتوانید از متد before()
در مسیریاب استفاده کنید:
$router->before('GET|POST', '/about', function() {
\Middlewares\AdminFilter::filter();
});
در اینجا:
/about
، میدلور AdminFilter
اجرا میشود.