Sweet View is a lightweight and powerful PHP template engine that unblocks all the most common features in handling a View in PHP.
It's recommended that you use Composer to install Sweet View.
$ composer require vulcanphp/sweetview
After Installing Sweet View require compoer autoloader then you can simple use it calling view() function
<?php
require_once __DIR__ . '/vendor/autoload.php';
echo view('welcome', ['message' => 'Welcome to Sweet View']);
// ...
Now, Create a View Template and Layout file into: /resources/views/
<?php
// view: welcome.php
$this->layout('layout.master')
->block('title', 'Welcome to Sweet View');
?>
<h1><?= $message ?></h1>
Create a Layout to: /resources/views/layout/
<?php
// layout: master.php
$this->minified(true);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= $this->getBlock('title', 'Welcome Home') ?></title>
</head>
<body>
<main class="container">
{{content}}
</main>
</body>
</html>
Thats it
- layout(string $path): self
- block(string $name, $value): self
- hasBlock(string $name): bool
- getBlock(string $name)
- with(array $params = []): self
- minified(bool $default = true): self
- include(string $path, array $params = []): self
- require(string $path, array $params = []): self
- includeOnce(string $path, array $params = []): self
- requireOnce(string $path, array $params = []): self
- component(string $path, array $params = []): self
<?php
// view: blogs.php
$this
// call a layout
->layout('layout.master')
// add a new block
->block('title', 'Blogs: Sweet View')
// declare variable all over the view
->with(['theme' => 'dark', 'sidebar' => true])
// require template part
->require('layout.breadcrumb')
// include template part
->include('layout.hero')
?>
<!-- include_once template part -->
<?php $this->includeOnce('layout.cta')?>
<div class="row">
<?php foreach($blogs as $blog): ?>
<div class="col-md-4">
<!-- include template component -->
<?php $this->component('components.blog', ['blog' => $blog]) ?>
</div>
<?php endforeach ?>
</div>
<!-- require_once template part -->
<?php $this->requireOnce('includes.contact')?>
<?php
// controller: home.php
use VulcanPhp\SweetView\Drivers\HtmlDriver;
use VulcanPhp\SweetView\SweetView;
// create a new SweetView instance
$view = SweetView::create(new HtmlDriver);
// get view engine
$engine = $view->getDriver()->getEngine();
// change resource directory
$engine->resourceDir(__DIR__ . '/resources/views/');
// render output
echo $engine->render('welcome', ['message' => 'Welcome to Sweet View']);
// ..
<?php
// controller: home.php
use VulcanPhp\SweetView\Engine\Html\Html;
// create a Html instance
$html = Html::load('welcome', 'master');
// Note: layout is optional
// or specify different folder
$html = Html::load(
__DIR__ . '/resources/views/welcome.php',
__DIR__ . '/resources/views/layout/master.php'
);
// change resource dir
$html->resourceDir(__DIR__ . '/directory/path/');
// set view file extension
$html->extension('.sweet');
// clean prevouse output
$html->clean();
// enable minification output
$html->minified();
// set global variable in view
$html->with(['theme' => 'dark', 'sidebar' => true]);
// render html output
echo $html->render(['title' => 'Sweet View']);
// ..
<?php
// layout: master.php
$this
// set default meta
->setMeta('charset', 'utf-8')
->setMeta('robots', 'all')
->setMeta('sitename', '{sitename}')
?>
<head>
<!-- render generated meta on head tag -->
<?= $this->siteMeta() ?>
</head>
// ..
<?php
// view: welcome.php
$this->setupMeta([
// set meta title
'title' => 'SweetView',
// set meta description
'description' => 'Simple & Powerful Php Template Engine',
// set og:image
'image' => 'https://domain.com/images/photo.png',
]);
// ..