如何格式化Zend_db Rowset输出?

时间:2010-05-16 10:36:44

标签: php zend-framework zend-db

我有一个模型,它引用了扩展 Zend_Db 的表注册表以及一些基本上一直使用fetchAll()的方法。

会发生什么:我的表有一个 DATE 字段,当我调用$ row-> reg_date时,我希望它输出已经格式化。是否可以通过在模型中执行某些操作或者是否必须手动格式化?

2 个答案:

答案 0 :(得分:1)

你有几个选择:

    在要求Zend_Db_Table_Row_Abstract::__get() 时,
  • 在表格中覆盖reg_date
  • 使用您自己的视图帮助器在视图中对其进行格式化,例如<?= $this->formatDate($this->row->reg_date, 'fancy'); ?>

Doctrine可能有你想要的答案,以下是http://www.doctrine-project.org/documentation/manual/1_2/en/introduction-to-models#generating-models

class User extends BaseUser
{
    public function setPassword($password)
    {
        return $this->_set('password', md5($password));
    }
}

$user = new User();
$user->username = 'jwage';
$user->password = 'changeme';

echo $user->password; // outputs md5 hash and not changeme

如果我是你,我会使用view helper-option。您可以在那里添加自定义CSS并准备就绪。如果您需要更改它,您可以在一个地方更改它并更新您的应用程序。

此外,如果您曾想对日期做一些事情(将其与另一个日期进行比较,只获得月份,本地化等),您需要一个干净的起点这就是你存储在数据库中(即2010-05-162010-05-16 16:55:00)。因此:视图设置属于视图。

答案 1 :(得分:0)

我强烈建议不要那样格式化日期。您对日期格式的要求可能会在某些时候发生变化,要求您对自定义数据库访问类进行更改。这种类型的自定义格式应该在视图中完成,恕我直言。

如果您只是必须这样做(我以前做过这样的事情,稍后会后悔),您需要extend Zend_Db_Table_Row并在那里进行自定义格式化。将自定义格式设置在子类中将减轻损失;)像chelmertz所说,您可能会覆盖__get(),检查reg_date,并在此时应用自定义格式。