php - Kohana 中的全局 View 变量

标签 php view kohana

我正在尝试弄清楚如何在 Kohana 中正确使用全局 View 变量。我有一个 Controller_Base提供页面基本布局的类:

abstract class Controller_Base extends Controller_Template {

  public $template = 'base';

  public function before () {
    parent::before();
    View::set_global('title' , '');
  }
}

我的 base.php View 看起来像这样:

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title><?php echo $title; ?></title>
</head>
<body>
  <?php echo $content; ?>
</body>
</html>

我还有一个Controller_Welcome继承自 Controller_Base 的类:

class Controller_Welcome extends Controller_Base {

  public function action_index () {
    $this->template->content = View::factory('welcome');
  }
}

welcome.php View 看起来像这样:

<?php $title = 'Some title'; ?>
<h1>Hello, world!</h1>

问题是:如何修改全局 $title来自 welcome.php 的变量所以在 View 链的末尾 base.php能得到吗?我不想将与 View 相关的任何内容放入 Controller 。

最佳答案

你应该可以这样做:

welcome.php View :

<?php View::set_global('title', 'Some title'); ?>
<h1>Hello, world!</h1>

Controller_Welcome 类:

class Controller_Welcome extends Controller_Base {

    public function action_index () {
        $this->template->content = View::factory('welcome')->render();
    }
}

请注意对 render() 的调用 - 它非常重要才能使其正常工作!在正常的执行流程中,base View 将首先被评估,然后是内部。为了在渲染基础之前调用set_global,您必须先明确渲染内部。


旁白:如果您正在做任何重要的模板工作,您真的应该考虑将 Kostache 与适当的“ViewModel”类一起使用,这是解决此问题的一种更优雅的方法。

关于php - Kohana 中的全局 View 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20220106/

相关文章:

php - 如何获得给定数据库的另一个根

javascript - 通过按下按钮加载具有不同数据的相同组件

android - RelativeLayout 宽度和高度 fill_parent 不起作用

javascript - 如何解决访问控制允许来源问题?

php - 优化基于Kohana的网站以提高速度和可扩展性

php - 为什么需要自己的 php 文件安全性,当已经给予 .htaccess 安全性时?

php - 在 for 循环中从 $_POST 获取数据

php - 数据库未从mysql数据库中读取

php - Laravel 5 : Parse error: syntax error, 意外 '?' ,期待变量 (T_VARIABLE)

android - 构建 3D 模型查看器 android?