2017 © Pedro Peláez
 

cakephp-plugin twig-view

Twig powered View for CakePHP 2.x

image

alanrodas/twig-view

Twig powered View for CakePHP 2.x

  • Friday, July 10, 2015
  • by alanrodas
  • Repository
  • 1 Watchers
  • 0 Stars
  • 100 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

TwigView plugin for CakePHP

Build Status Latest Stable Version Total Downloads Coverage Status Bitdeli Badge, (*1)

This plugin for the CakePHP Framework allows you to use the Twig Templating Language for your views., (*2)

In addition to enabling the use of most of Twig's features, the plugin is tightly integrated with the CakePHP view renderer giving you full access to helpers, objects and elements., (*3)

Installation

Make sure you have composer installed and configured with the autoloader registering during bootstrap as described here. Make sure you have a composer.json and add the following to your required section., (*4)

"wyrihaximus/twig-view": "dev-master"

Cache Permissions

Make the default view-cache folder writeable., (*5)

APP/Plugin/TwigView/tmp/views

Alternatively: Set where you want cache files to be stored., (*6)

define('TWIG_VIEW_CACHE', APP . 'tmp');

Using the View Class

To make CakePHP aware of TwigView edit your APP/Controller/AppController.php file and add the following:, (*7)

class AppController extends Controller  {
    public $viewClass = 'TwigView.Twig';
}

Be sure to load the TwigView plugin in your bootstrap.php file with:, (*8)

CakePlugin::load('TwigView', array('bootstrap' => true));

or:, (*9)

CakePlugin::loadAll();

Now start creating view files using the .tpl extension., (*10)

Default Layouts

This plugin comes with all default layouts converted to Twig. Examples can be found in:, (*11)

APP/Plugin/TwigView/examples

Themes

The plugin has support for themes and works just like the Theme view. Simply add the $theme property to your controller and you're set., (*12)

class AppController extends Controller  {
    public $viewClass = 'TwigView.Twig';
    public $theme = 'Rockstar';
}

This will cause the view to also look in the Themed folder for templates. In the above example templates in the following directory are favored over their non-themed version., (*13)

APP/View/Themed/Rockstar/

If you, for example, want to overwrite the Layouts/default.tpl file in the Rockstar theme, then create this file:, (*14)

APP/View/Themed/Rockstar/Layouts/default.tpl

Using Helpers inside Templates

All helper objects are available inside a view and can be used like any other variable inside Twig., (*15)

{{ time.nice(user.created) }}

... where ..., (*16)

{{ time.nice(user.created) }}
    ^    ^    ^    ^____key
    |    |    |____array (from $this->set() or loop)
    |    |_____ method
    |______ helper

Which is the equivalent of writing:, (*17)

<?php echo $this->Time->nice($user['created']); ?>

A more complex example, FormHelper inputs:, (*18)

{{
  form.input('message', {
    'label': 'Your message',
    'error': {
      'notempty': 'Please enter a message'
    }
  })
}}

Referencing View Elements

Elements must be .tpl files and are parsed as Twig templates. Using .ctp is not possible., (*19)

In exchange for this limitation you can import elements as easy as this:, (*20)

{{ _view.element('Plugin.element') }}

Translating Strings

The trans filter can be used on any string and simply takes the preceding string and passes it through the __() function., (*21)

{{
  form.input('email', {
    'label': 'Your E-Mail Address'| trans
  })
}}
````

This is the equivalent of writing:

```php
<?php echo $this->Form->input('email', array(
   'label' => __("Your E-Mail Address")
)); ?>

Translating multiple lines

The trans-block element will help you with that. This is especially useful when writing email templates using Twig., (*22)

{% trans %}
Hello!

This is my mail body and i can translate it in X languages now.
We love it!
{% endtrans %}

Accessing View Instance

In some cases it is useful to access $this, for example to build a DOM id from the current controller and action name., (*23)

The object is accessible through _view., (*24)

<div class="default" id="{{ _view.name|lower ~ '_' ~ _view.action|lower }}">

Precompiling all templates

Twig has to compile all the templates before they can be used. This adds a one time per template delay to the loading of a page. This can be countered by using the Compile Templates shell command. This commands scans for all the templates and compiles them with Twig for caching and performence gains., (*25)

./cake TwigView.compile_templates all

The Versions

10/07 2015

dev-master

9999999-dev

Twig powered View for CakePHP 2.x

  Sources   Download

MIT

The Requires

 

The Development Requires

twig cakephp view

10/07 2015

dev-develop

dev-develop

Twig powered View for CakePHP 2.x

  Sources   Download

MIT

The Requires

 

The Development Requires

twig cakephp view

10/07 2015

1.1

1.1.0.0

Twig powered View for CakePHP 2.x

  Sources   Download

MIT

The Requires

 

The Development Requires

twig cakephp view