PHPackages                             windwalker/view - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. windwalker/view

ActiveWindwalker-package[Framework](/categories/framework)

windwalker/view
===============

Windwalker View package

2.1.9(10y ago)028LGPL-2.0+PHPPHP &gt;=5.3.10

Since Oct 5Pushed 10y ago3 watchersCompare

[ Source](https://github.com/ventoviro/windwalker-view)[ Packagist](https://packagist.org/packages/windwalker/view)[ Docs](https://github.com/ventoviro/windwalker-view)[ RSS](/packages/windwalker-view/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (3)Versions (23)Used By (0)

Windwalker View
===============

[](#windwalker-view)

Installation via Composer
-------------------------

[](#installation-via-composer)

Add this to the require block in your `composer.json`.

```
{
    "require": {
        "windwalker/view": "~2.0"
    }
}
```

Create A Simple View
--------------------

[](#create-a-simple-view)

### AbstractView

[](#abstractview)

`AbstractView` is very simple, it only need a render method to render what you want.

```
use Windwalker\View\AbstractView;

class MyView extends AbstractView
{
    public function render()
    {
        $tmpl = set('foo', 'World');

$view->render();
```

The Result will be:

```
The is a Markdown Article

Hello World~~~!
```

### SimpleHtmlView

[](#simplehtmlview)

`SimpleHtmlView` can set a php file to render:

```
use Windwalker\View\SimpleHtmlView;

class MyHtmlView extends SimpleHtmlView
{
    public function prepare($data)
    {
        // Format dome data
        $data['time'] = $data['time']->format('Y-m-d H:i:s');

        $data['link'] = '/flower/' . OutputFilter::stringUrlSafe($data['name']) . '.html';
    }
}

$view = new MyHtmlView;

$view->set('time', new DateTime);
$view->set('name', $name);

$view->setLayout('/path/to/template.php')->render();
```

The template file:

```

    Now is:

    I'm:

```

HtmlView
--------

[](#htmlview)

`HtmlView` is more powerful than `SimpleHtmlView`, we can set [Renderer](https://github.com/ventoviro/windwalker-renderer)as a render engine into it, and find template in several paths.

```
use Windwalker\View\HtmlView;

$paths = new SplPriorityQueue;
$paths->insert('path/of/system', 300);
$paths->insert('path/of/theme', 500);

$data = array(
    'time' => new DateTime
);

$view = new HtmlView($data, new PhpRenderer($paths));

$view->setLayout('foo')->render(); // Will find foo.php in every paths.
```

See also: [Windwalker Renderer](https://github.com/ventoviro/windwalker-renderer)

### Extends It

[](#extends-it)

```
use Windwalker\View\HtmlView;
use Windwalker\Renderer\BladeRenderer;

// A Blade View
class BladeHtmlView extends HtmlView
{
    public function __construct($data = array(), BladeRenderer $renderer = null)
    {
        $renderer = $renderer ? : new BladeRenderer('default/path', array('cache_path' => 'cache/path'))

        parent::__construct($data, $renderer);
    }
}

// View for different MVC structures
class ArticleHtmlView extends BladeHtmlView
{
    public function prepare($data)
    {
        $data['time'] = $data['time']->format('Y-m-d H:i:s');
    }
}

$view = new MyHtmlView;

$view->['time'] = new DateTime; // Use array access

$view->setLayout('template')->render(); // Will find template.blade.php
```

### The Data object

[](#the-data-object)

HtmlView use `Windwalker\Data\Data` as data store, we don't need to worry about data exists or not.

```
