1

我正在尝试处理我的应用程序中的百分比。用户输入一个值,例如 12(表示 12%)。我必须将它作为比率存储在我的数据库中:0.12。

然后我必须将其显示为 12(对于 12%)。

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

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

再想一想,我尝试重写 setValue() 方法,也将值除以 100。但是当我填充表单时,也会调用 setValue,这也给了我 0.0012。

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

谢谢

4

1 回答 1

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 没有提供任何挂钩来更改数据。

于 2013-04-04T09:32:28.820 回答