【问题标题】:How To Start Using Kostache?如何开始使用 Kostache?
【发布时间】:2011-09-08 21:22:07
【问题描述】:

我刚刚问了一个关于模板的问题 (Templates In Kohana 3.1),现在我知道我应该使用 Kostache。它是Mustache 模板语言的一个模块。

无论如何,我刚刚为我的 Kohana 3.1 启用了 Kostache 模块,一切正常。它安装正确!接下来做什么?怎么用?

我现在应该把我的观点放在哪里? 我的控制器应该扩展什么? 如何分配变量? 如何为视图制作页眉、页脚等?

也许有分步指南吗? Thisthis 对我没有多大帮助...

【问题讨论】:

    标签: view kohana kohana-3 mustache


    【解决方案1】:

    我现在应该把我的观点放在哪里?

    视图类包含模板的逻辑,按照惯例应存储在classes/view/{template name}.php

    模板包含您的 HTML,应存储在模块根目录的 templates 目录中,例如templates/login.mustache

    默认情况下,kostache 会尝试根据您的视图类的名称来计算模板的位置。

    如果您的视图类名为 View_Admin_Login,那么 kostache 将查找 templates/admin/login.mustache

    我的控制器应该扩展什么?

    您不需要扩展任何特殊的控制器,普通的Controller 作为基础就可以正常工作。

    如何分配变量

    控制器:

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

    模板:

    {{message}}
    

    当然,您在视图类中声明的任何方法或变量也将在 模板。如果存在同名的类变量和方法,则方法将始终优先于变量。

    如何为视图制作页眉、页脚等

    如果您阅读kostache guide,将会有所帮助。这个想法是您的视图扩展Kostache_Layout,另请参阅layout template

    【讨论】:

    • 这比我想象的要容易... =]
    【解决方案2】:

    在你说的两个存储库中有很多演示和示例不会帮助你。

    【讨论】:

    • 分步指南是完成工作的最佳方式。 “很多”样本有时听起来像垃圾,根本没有帮助。一个干净的样品有很大帮助。无论如何感谢插件,将逻辑与模板分离的想法很好。现在我只需要学习如何使用它。
    • 我花了一天多的时间试图让 Kostache_Layout 工作,但没有成功。我终于在 github 上找到了 ddrake 的 kohana_demo,它恰好使用了 Kostache。这非常有帮助。 github.com/ddrake/kohana_demo
    • ddrake repo 很有帮助(谢谢),还找到了 zombor 的 Vendo 应用程序 (github.com/vendo/vendo),这也很有帮助。
    【解决方案3】:

    试试这个...

    //应用程序/类/控制器:

    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}}
    

    【讨论】:

      【解决方案4】:

      在您的 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));
          }
      }
      

      在您的 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;
      }
      

      在您的 MODPATH/KOstache/classes/templates/test.mustache 中:

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

      在下面的例子中,不要注意命名类和继承: More examples on GitHub

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-31
        • 1970-01-01
        • 2010-09-07
        • 2011-03-29
        • 2019-03-17
        • 2010-10-14
        • 1970-01-01
        • 2011-01-09
        相关资源
        最近更新 更多