fyre / view
A template rendering library.
Requires
- fyre/container: ^1.0
- fyre/csp: ^7.0
- fyre/csrf: ^5.0
- fyre/formatter: ^4.0
- fyre/formbuilder: ^3.0
- fyre/htmlhelper: ^3.0
- fyre/lang: ^5.0
- fyre/orm: ^10.0
- fyre/path: ^2.0
- fyre/router: ^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.59
- fyre/php-cs-fixer-config: ^1.0
- phpunit/phpunit: ^11
README
FyreView is a free, open-source template rendering library for PHP.
Table Of Contents
- Installation
- Basic Usage
- Methods
- Layouts
- Cells
- Elements
- Blocks
- Template Locator
- Cell Registry
- Helper Registry
- Helpers
Installation
Using Composer
composer require fyre/view
In PHP:
use Fyre\View\View;
Basic Usage
$templateLocator
is a TemplateLocator.$helperRegistry
is a HelperRegistry.$cellRegistry
is a CellRegistry.$request
is a ServerRequest.
$view = new View($templateLocator, $helperRegistry, $cellRegistry, $request);
Any dependencies will be injected automatically when loading from the Container.
$view = $container->use(View::class);
Methods
Get Data
Get the view data.
$data = $view->getData();
Get Layout
Get the layout.
$layout = $view->getLayout();
Get Request
Get the ServerRequest.
$request = $view->getRequest();
Load Helper
Load a Helper.
$name
is a string representing the helper name.$options
is an array containing helper options.
$helper = $view->loadHelper($name, $options);
Render
Render a template.
$file
is a string representing the template file.
echo $view->render($file);
Templates files must end in the extension .php
, and must exist in one of the defined TemplateLocator paths.
Set Data
Set view data.
$data
is an array containing data to pass to the template.
$view->setData($data);
Set Layout
Set the layout.
$layout
is a string representing the layout file.
$view->setLayout($layout);
Layout files must end in the extension .php
, and must exist in a "layouts" folder in one of the defined TemplateLocator paths.
Layouts
You can use layouts when rendering views by placing a default.php
file in a layouts folder of one of the defined TemplateLocator paths. You can create multiple layouts, and specify the layout to use with the setLayout
method above.
The rendered content is passed to the layout file via the content
method of $this
. Any other defined data is also passed to the layout.
$this->content();
Cells
Custom cells can be created by extending \Fyre\View\Cell
, and suffixing the class name with "Cell".
Cell
Render a Cell.
$cell
is a string, and can either represent the cell name (implementing adisplay
method) or in the format of "Cell::method".$args
is an array of arguments that will be passed to the cell method, and will default to [].
echo $this->cell($cell, $args);
Cell classes must exist in a namespace that will be loaded by the CellRegistry.
Elements
Element
Render an element.
$file
is a string representing the element file.$data
is an array containing data to pass to the element, and will default to [].
echo $this->element($file, $data);
Element files must end in the extension .php
, and must exist in an "elements" folder in one of the defined TemplateLocator paths.
Blocks
Append
Append content to a block.
$name
is a string representing the block name.
$this->append($name);
Any output until the block is ended will be appended to the block.
Assign
Assign content to a block.
$name
is a string representing the block name.$content
is a string representing the content.
$this->assign($name, $content);
End
End a block.
$this->end();
Fetch
Fetch a block.
$name
is a string representing the block name.$default
is a string representing the default value, and will default to "".
$block = $this->fetch($name, $default);
Prepend
Prepend content to a block.
$name
is a string representing the block name.
$this->prepend($name);
Any output until the block is ended will be prepended to the block.
Reset
Reset content of a block.
$name
is a string representing the block name.
$this->reset($name);
Start
$name
is a string representing the block name.
Start content for a block.
$this->start($name);
Template Locator
use Fyre\View\TemplateLocator;
$templateLocator = new TemplateLocator();
Autoloading
It is recommended to bind the TemplateLocator to the Container as a singleton.
$container->singleton(TemplateLocator::class);
Template Locator Methods
Add Path
Add a path for loading templates.
$path
is a string representing the path.
$templateLocator->addPath($path);
Get Paths
Get the paths.
$paths = $templateLocator->getPaths();
Locate
Find a file in paths.
$file
is a string representing the file name.$folder
is a string representing the folder name, and will default to "".
$filePath = $templateLocator->findFile($file, $folder);
Remove Path
$path
is a string representing the path.
$templateLocator->removePath($path);
Template Locator Static Methods
Normalize
Normalize a template file name.
$string
is a string representing the file name.
$normalized = TemplateLocator::normalize($string);
Cell Registry
use Fyre\View\CellRegistry;
$container
is a Container.
$cellRegistry = new CellRegistry($container);
Autoloading
It is recommended to bind the CellRegistry to the Container as a singleton.
$container->singleton(CellRegistry::class);
Any dependencies will be injected automatically when loading from the Container.
$cellRegistry = $container->use(CellRegistry::class);
Cell Registry Methods
Add Namespace
Add a namespace for automatically loading cells.
$namespace
is a string representing the namespace.
$cellRegistry->addNamespace($namespace);
Build
Build a cell.
$name
is a string representing the cell name.$view
is a View.$options
is an array containing cell options.
$cell = $cellRegistry->build($name, $view, $options);
Clear
Clear all namespaces and cells.
$cellRegistry->clear();
Find
Find a cell class.
$name
is a string representing the cell name.
$className = $cellRegistry->find($name);
Get Namespaces
Get the namespaces.
$namespaces = $cellRegistry->getNamespaces();
Has Namespace
Check if a namespace exists.
$namespace
is a string representing the namespace.
$hasNamespace = $cellRegistry->hasNamespace($namespace);
Remove Namespace
Remove a namespace.
$namespace
is a string representing the namespace.
$cellRegistry->removeNamespace($namespace);
Helper Registry
use Fyre\View\HelperRegistry;
$container
is a Container.
$helperRegistry = new HelperRegistry($container);
Autoloading
It is recommended to bind the HelperRegistry to the Container as a singleton.
$container->singleton(HelperRegistry::class);
Any dependencies will be injected automatically when loading from the Container.
$helperRegistry = $container->use(HelperRegistry::class);
Helper Registry Methods
Add Namespace
Add a namespace for automatically loading helpers.
$namespace
is a string representing the namespace.
$helperRegistry->addNamespace($namespace);
Build
Build a helper.
$name
is a string representing the helper name.$view
is a View.$options
is an array containing helper options.
$helper = $helperRegistry->build($name, $view, $options);
Clear
Clear all namespaces and helpers.
$helperRegistry->clear();
Find
Find a helper class.
$name
is a string representing the helper name.
$className = $helperRegistry->find($name);
Get Namespaces
Get the namespaces.
$namespaces = $helperRegistry->getNamespaces();
Has Namespace
Check if a namespace exists.
$namespace
is a string representing the namespace.
$hasNamespace = $helperRegistry->hasNamespace($namespace);
Remove Namespace
Remove a namespace.
$namespace
is a string representing the namespace.
$helperRegistry->removeNamespace($namespace);
Helpers
Helpers can be used inside of templates or elements using the class name as a property of $this
.
$helper = $this->MyHelper;
Alternatively, you can load a helper with configuration options using the loadHelper
method of the View.
Custom helpers can be created by extending \Fyre\View\Helper
, suffixing the class name with "Helper", and ensuring the __construct
method accepts View as the argument (and optionally an $options
array as the second parameter).
Get Config
Get the configuration options.
$config = $helper->getConfig();
Get View
Get the View.
$view = $helper->getView();
CSP
The CSP helper allows an easy way to generate nonces, and automatically add them to your CSP policies.
Script Nonce
Generate a script nonce.
$nonce = $this->CSP->scriptNonce();
Style Nonce
Generate a style nonce.
$nonce = $this->CSP->styleNonce();
Form
Button
Render a button element.
$content
is a string representing the button content.$options
is an array of options for rendering the button.
$button = $this->Form->button($content, $options);
By default, the button content will be HTML escaped. To disable this, set the escape
value to false in the options
array.
All other options
will be created as attributes on the button element.
Close
Render a form close tag.
$close = $this->Form->close();
Fieldset Close
Render a fieldset close tag.
$fieldsetClose = $this->Form->fieldsetClose();
Fieldset Open
Render a fieldset open tag.
$options
is an array of options for rendering the fieldset.
$fieldset = $this->Form->fieldsetOpen($options);
All options
will be created as attributes on the fieldset element.
Input
Render an input element.
$key
is a string representing the field key, using dot notation.$options
is an array of options for rendering the label.
$input = $this->Form->input($key, $options);
All options
will be created as attributes on the input element.
- The default
id
andname
attributes will be converted from the field key. - The input
type
and other default attributes will be determined from the TableSchema and Model Validation. - The default value will be retrieved from the ServerRequest
$_POST
data or form context.- If the form was opened in an Entity context, the Entity and the TableSchema will also be used.
- Select options can be specified using the
options
key. - Checkboxes and radio inputs can be marked as checked by setting the
checked
option to true. - Multiple select menus will (by default) render a hidden field with an empty value. This can be disabled by setting the
hiddenField
option to false. - Checkboxes will (by default) render a hidden field with the value "0". This can be disabled by setting the
hiddenField
option to false.
You can also use the following helper methods to generate specific input type fields.
$input = $this->Form->checkbox($key, $options); $input = $this->Form->color($key, $options); $input = $this->Form->date($key, $options); $input = $this->Form->datetime($key, $options); $input = $this->Form->email($key, $options); $input = $this->Form->file($key, $options); $input = $this->Form->hidden($key, $options); $input = $this->Form->image($key, $options); $input = $this->Form->month($key, $options); $input = $this->Form->number($key, $options); $input = $this->Form->password($key, $options); $input = $this->Form->radio($key, $options); $input = $this->Form->range($key, $options); $input = $this->Form->reset($key, $options); $input = $this->Form->search($key, $options); $input = $this->Form->select($key, $options); $input = $this->Form->selectMulti($key, $options); $input = $this->Form->submit($key, $options); $input = $this->Form->tel($key, $options); $input = $this->Form->text($key, $options); $input = $this->Form->time($key, $options); $input = $this->Form->url($key, $options); $input = $this->Form->week($key, $options);
Label
Render a label element.
$key
is a string representing the field key.$options
is an array of options for rendering the label.
$label = $this->Form->label($key, $options);
The label text will be retrieved from the Lang using the Field.{field_name}
key or converted from the field name. You can also set custom label text by setting the text
option.
By default, the label content will be HTML escaped. To disable this, set the escape
value to false in the options
array.
All other options
will be created as attributes on the label element. The default for
attribute will be converted from the field key.
Legend
Render a legend element.
$content
is a string representing the legend content.$options
is an array of options for rendering the legend.
$legend = $this->Form->legend($content, $options);
By default, the legend content will be HTML escaped. To disable this, set the escape
value to false in the options
array.
All other options
will be created as attributes on the legend element.
Open
Render a form open tag.
$item
is an Entity or other (supported) object representing the form context, and will default to null$options
is an array of options for rendering the form.
$open = $this->Form->open($item, $options);
All options
will be created as attributes on the form element.
Open Multipart
Render a multipart form open tag.
$item
is an array or object representing the form context, and will default to null$options
is an array of options for rendering the form.
$open = $this->Form->openMultipart($item, $options);
All options
will be created as attributes on the form element.
Format
The format helper provides a convenient wrapper for Formatter methods.
Url
The URL helper provides methods for generating Router links.
Link
Generate an anchor link for a destination.
$content
is a string representing the link content.$options
is an array containing options.escape
is a boolean indicating whether to escape the link content, and will default to true.fullBase
is a boolean indicating whether to use the full base URI, and will default to false.
$link = $this->Url->link($content, $options);
Path
Generate a url for a relative path.
$path
is a string representing the file path.$options
is an array containing options.fullBase
is a boolean indicating whether to use the full base URI, and will default to false.
$url = $this->Url->path($path, $options);
To
Generate a url for a named route.
$name
is a string representing the route alias.$arguments
is an array containing the route arguments.?
is an array containing route query parameters.#
is a string representing the fragment component of the URI.
$options
is an array containing options.fullBase
is a boolean indicating whether to use the full base URI, and will default to false.
$url = $this->Url->to($destination, $options);