渲染要查看的控制器的值

时间:2011-05-24 13:19:50

标签: php

我是班级和对象的新手。在这里我正在制作一个发票的应用程序。所以对于控制器,就像在框架中我把它们作为处理程序。所以对于UserHandler 我提出了这个问题:

<?php
class UserHandler {
  public $db;
  public function __construct($db) {
    $this->db = $db;
  }
  public function index() {
    print_r($this->db->query("SELECT * FROM nt_user"));
  }
 }

它正如我想要的那样在数组中显示结果。

Array ( [0] => 1 [id] => 1 [1] => xyz [name] => xyz [2] => 5d6305f2 [password] => 5d6305f2 [3] => 2011-05-24 14:59:17 [created_at] => 2011-05-24 14:59:17 [4] => 2011-05-24 14:59:17 [updated_at] => 2011-05-24 14:59:17 ) 

现在我想在视图模板中显示该结果。由于视图模板是另一个文件,如何将所有处理程序的值呈现给视图。 我希望视图页面显示如下:

name:
Password:

就像登录框一样。请告诉我该怎么做?

2 个答案:

答案 0 :(得分:1)

您使用的是特定框架还是自己推出?例如,Zend Framework就是这样的。

<?php
class UserHandler extends Zend_Controller_Action {
  public $db;
  public function __construct($db) {
    $this->db = $db;
  }
  public function index() {
    $this->view->data = $this->db->query("SELECT * FROM nt_user"));
  }
 }

然后在视图中

<?php 
    //view.phtml
    var_dump($this->data);

这将为您提供帖子中的数组转储。我不会做循环和显示的东西,但我相信你可以自己解决这个问题。

答案 1 :(得分:0)

您可以使用魔术方法__get和__set创建一个静态类,其值为:

class Data {

    public static $atributos = array();

    public function __get($chave) {
        return array_key_exists($chave, $this->atributos) ? $this->atributos[$chave] : NULL;
    }

    public function __set($chave, $valor) {
        $this->atributos[$chave] = $valor;
    }

}

要设置值,请使用:Data::__set('view_data', $my_var);

在视图中,您只需:Data::__get('view_data');

我认为它会起作用=)