ظاهر

شامل دو قسمت که یکی در backend و دیگری در frontend است. این دو قسمت از طریق رابطه ی پدر-فرزندی به یکدیگر متصل و رابط بین کنترلر و قالب هستند.

برای منظم بودن فایل ها، بهتر است تا در هر قسمت یک پوشه با نام views ایجاد شود و فایل های مرتبط با آن قسمت در آن تعریف شود .

فراخوانی ظاهر

برای اطلاعات بیشتر به صفحه ی کنترلر مراجعه کنید

هر کنترلر با استفاده از کلاس backages\base\view و متد byName یک ظاهر و در نتیجه یک قالب را فراخوانی میکند. در صورتی که هر یک از فایل ها در فایل autoloader.json مرتبط با آن قسمت و یا در فایل theme.json در قسمت ظاهری تعریف نشده باشد، این کلاس با پرتاب یک استثناء از جنس کلاس packages\base\NoViewException از ادامه ی روند برنامه جلوگیری خواهد کرد .

نمونه فایل

<?php
namespace packages\packagename\controllers;
use \packages\base\{response, controller, view, NotFound};
use \packages\packagename\{post, views};
class News extends controller {
    public function view($data): response {
        $post = post::byId($data["post_id"]);
        if (!$post) {
            throw new NotFound();
        }
        $response = new response(true);
        $view = view::byName(views\news\show::class);
        $view->setPost($post);
        $response->setView($view);
        return $this->response;
    }
}

قسمت backend

یک فایل در پوشه ی اصلی پکیج تعریف می شود(بهتر است یک پوشه با نام views برای فایل های این قسمت ایجاد کنید ). این فایل به وسیله ی رابطه ی پدر-فرزندی به فایل packages\base\view متصل است .

نمونه فایل

<?php
namespace packages\packagename\views\news;
use \packages\base\view;
use \packages\packagename\post;
class show extends view {
    public function setPost(post $post) {
        $this->setData($post, "post");
    }
    protected function getPost() {
        return $this->getData("post");
    }
}

برای استفاده در فایل autoloader.json در پوشه ی اصلی پکیج باید این فایل معرفی شود .

نمونه فایل

{
    "files":[
        {
            "classes":["views\\news\\show"],
            "file":"views/news/show.php"
        }
    ]
}

قسمت frontend

برای اطلاعات بیشتر به صفحه ی قالب مراجعه کنید

این فایل در پوشه ی معرفی شده به عنوان بخش قالب ایجاد می شود (بهتر است یک پوشه با نام views برای فایل های این قسمت ایجاد کنید).

فایل این قسمت به وسیله ی رابطه ی پدر-فرزندی به فایل متناظر از قسمت backend متصل است،

نمونه فایل

<?php
namespace themes\frontname\views\news;
use \packages\packagename\views\news\show as parentView;
class show extends parentView {
    protected $post;
    public function __beforeLoad() {
        $this->post = $this->getPost();
    }
}

متد __beforeLoad() به صورت خودکار و قبل از بارگذاری قسمت قالب برنامه صدا زده خواهد شد .

همچنین نیاز هست تا در فایل autoloader.json در پوشه ی frontend این فایل برای استفاده معرفی شود .

نمونه فایل

{
    "files":[
        {
            "classes":["views\\news\\show"],
            "file":"views/news/show.php"
        }
    ]
}
برای اطلاعات بیشتر به صفحه ی بارگذاری خودکار مراجعه کنید

برای ارتباط قسمت ظاهری و قسمت قالب (قسمتی که HTML را شامل می شود) نیاز هست تا در فایل theme.json در کلیدی با عنوان views رابطه ی این دوفایل و فایل html را معرفی کنید.

نمونه فایل

{
    "name": "frontname",
    "title": "Site Frontend",
    "version": "1.0.0",
    "views": [
        {
            "name": "\\themes\\frontname\\views\\news\\show",
            "parent": "\\packages\\packagename\\views\\news\\show",
            "file": "html/news/show.php"
        }
    ]
}
برای اطلاعات بیشتر به صفحه ی قالب مراجعه کنید