ZF1:如何处理存储在数据库中的百分比和用户输入的数据?

时间:2013-04-03 12:07:05

标签: php zend-framework filter

我正在尝试处理我的应用程序中的百分比。用户输入类似12的值(12%)。我必须将其存储在我的数据库中,比例为:0.12。

然后我必须将它显示为12(12%)。

我显示它的部分非常简单,我使用了一个自定义的View Helper,它将元素值乘以100。

困难的部分是用户输入值。我首先想到的是一个过滤器,它除以100的值。它用于将值存储在数据库中,但是当我检索该值时,方法“getValue()”应用过滤器,以便我得到值0.0012。

第二个想法,我试图覆盖setValue()方法,也按每100分值。但是当我填充表单时,也调用了setValue,这也给了我0.0012。

我想知道如何处理这个问题?你有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

由于Dmonix的评论,我解决了这个问题。我在我的模型中创建了两个方法来在数据库插入/更新之前处理除法:

public function preInsert($event)
{
    $this->_updatePercentageValue();
}

public function preUpdate($event)
{
    $this->_updatePercentageValue();
}

private function _updatePercentageValue()
{
    $value = $this->getValue();
    if ($value != null) {
        $this->setValue($value / 100);
    }
}

我意识到在表单级别处理它并不是一个好主意,因为在这种情况下ZF1没有提供任何钩子来改变数据。