开发者

How To Start Using Kostache?

I just asked a question ( Templates In Kohana 3.1 ) about templates and now I know that I should use Kostache. It's a module for the Mustache template language.

Anyway, I just enabled Kostache module for my Kohana 3.1 and all works. It's installed correctly! What to do next? How to use it?

Where should I put my views now? What my controller should extend? How to assign variabl开发者_StackOverflowe? How to make header, footer etc. for views?

Maybe there are step to step guide for it? This and this won't help me a lot...


Where should I put my views now?

View classes contain logic for your templates and by convention should be stored in classes/view/{template name}.php

Templates contain your HTML and should be stored in the templates directory in the root of your module, e.g. templates/login.mustache

By default kostache will try and work out the location of the template based on your view class' name.

If your view class is called View_Admin_Login then kostache will look for templates/admin/login.mustache

What my controller should extend?

You do not need to extend any special controllers, the normal Controller will work fine as a base.

How to assign variable

Controller:

$view = new View_Admin_Login;

$view->message = 'Hello';
$this->response->body($view->render());

Template:

{{message}}

Of course, any methods or variables you declare in your view class will also be available in the template. If there is a class variable and method with the same name then the method will always take precedence over the variable.

How to make header, footer etc. for views

It will help if you read the kostache guide. The idea is that your views extend Kostache_Layout, see also the layout template


There's lots of demos and examples in both of the repositories that you said won't help you.


Try this...

//application/classes/controller:

class Controller_Test extends Controller {

 public function action_index()
 {
    $view = new View_Home;
    $this->response->body($view->render());
 }

}

//application/classes/view/Home.php:

class View_Home {
    public $name = "Chris";
    public $value = 10000;

    public function taxed_value() {
        return $this->value - ($this->value * 0.4);
    }

    public $in_ca = true;
    protected $_layout = 'home';
}

//application/templates/home.mustache:

Hello {{name}}
You have just won ${{value}}!
{{#in_ca}}
Well, ${{ taxed_value }}, after taxes.
{{/in_ca}}


In your APPPATH/classes/controller/Test.php:

class Controller_Test extends Controller{

    public function action_index()
    {
        $renderer = Kostache::factory();
        $this->response->body($renderer->render(new View_Test));
    }
}

In your MODPATH/KOstache/classes/view/Test.php:

class View_Test
{
    public $name = "Chris";
    public $value = 10000;

    public function taxed_value() {
        return $this->value - ($this->value * 0.4);
    }

    public $in_ca = true;
}

In your MODPATH/KOstache/classes/templates/test.mustache:

Hello {{name}}
You have just won ${{value}}!
{{#in_ca}}
Well, ${{ taxed_value }}, after taxes.
{{/in_ca}}

In the following example, do not pay attention to naming classes and inheritance: More examples on GitHub

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜