Forms 在输入表单上显示浮点

Forms 在输入表单上显示浮点,forms,cakephp,Forms,Cakephp,我是CakePHP游戏的新手,需要一些关于如何解决看似简单的问题的见解。在我的新工作中,我继承了一些利用该框架的内部网站,我正努力单独用谷歌来解决这个问题 我拥有的是一个视图,它加载表单并用数据库中已有的数据填充表单。有三个字段具有此行为,并且都有相同的问题 这些字段在视图中声明为: echo $this->Form->input('hotel_costs'); echo $this->Form->input('misc_costs'); 在数据库中,它们被声明为flo

我是CakePHP游戏的新手,需要一些关于如何解决看似简单的问题的见解。在我的新工作中,我继承了一些利用该框架的内部网站,我正努力单独用谷歌来解决这个问题

我拥有的是一个视图,它加载表单并用数据库中已有的数据填充表单。有三个字段具有此行为,并且都有相同的问题

这些字段在视图中声明为:

echo $this->Form->input('hotel_costs');
echo $this->Form->input('misc_costs');
在数据库中,它们被声明为
float
数据类型,因此,当加载到浏览器时,有时会显示为float:(15.7变为15.69999999…)

环顾四周,似乎有像NumberHelper这样的助手能够解决我的问题,但我不知道如何将功能与表单值结合起来。我找错地方了吗


谢谢

您可以尝试强制输入[type=text],这样cake就不会试图猜测输入类型

$this->Form->input('hotel_costs', array(
   'type' => 'text'
));
$this->Form->input('misc_costs', array(
   'type' => 'text'
));
如果这仍然不起作用,请发回更多详细信息

  • 哪个控制器操作(添加/索引/编辑)
  • 行动守则
  • 数据库中数据的
    var\u dump()

  • 您可以尝试强制输入[type=text],这样cake就不会试图猜测输入类型

    $this->Form->input('hotel_costs', array(
       'type' => 'text'
    ));
    $this->Form->input('misc_costs', array(
       'type' => 'text'
    ));
    
    如果这仍然不起作用,请发回更多详细信息

  • 哪个控制器操作(添加/索引/编辑)
  • 行动守则
  • 数据库中数据的
    var\u dump()

  • 它与强制输入类型为文本无关。您是说您不希望字段中的浮点值,而是希望取而代之的是一个四舍五入(小数位数)的数字吗?它必须全面适用。您有自定义视图还是烘焙视图?
    (我想问这些作为对你问题的评论,但我的回答不够高。)

    这与强制输入文本无关。您是说您不希望字段中的浮点值,而是希望取而代之的是一个四舍五入(小数位数)的数字吗?它必须全面适用。您有自定义视图还是烘焙视图?
    (我想问这些问题作为对你问题的评论,但我的回答不够高。)

    数据库字段上的float值保存为15.7。但是当CakePHP构建表单时,它会用15.699999填充字段。我在寻找一种方法,使浮点值正确地显示在输入字段上(四舍五入、截断,任何必要的),而不影响功能:使用输入表单显示、更改和保存值的能力。我假设这是一个自定义视图,不确定“烘焙”是什么意思请查看此答案。我相信你需要写一个事后发现的方法。通过bake,我的意思是您是否使用了控制台命令cake bake来生成一些代码。您不必编写事件处理程序,也可以更改视图,将舍入值写入表单输入字段的“默认”值,如本手册页面的“公共选项”部分中的示例所示<代码>echo$this->Form->input('component',array('default'=>'Sugar')当然你需要用
    $this->Number->precision($this->YourModelName->hotel\u costs,2)替换“Sugar”谢谢你的链接,马文。我可以通过在模型上创建一个
    afterFind()
    函数来解决这个问题,该函数根据您的注释在受影响的行上执行
    number\u format()
    。数据库字段上的float值保存为15.7。但是当CakePHP构建表单时,它会用15.699999填充字段。我在寻找一种方法,使浮点值正确地显示在输入字段上(四舍五入、截断,任何必要的),而不影响功能:使用输入表单显示、更改和保存值的能力。我假设这是一个自定义视图,不确定“烘焙”是什么意思请查看此答案。我相信你需要写一个事后发现的方法。通过bake,我的意思是您是否使用了控制台命令cake bake来生成一些代码。您不必编写事件处理程序,也可以更改视图,将舍入值写入表单输入字段的“默认”值,如本手册页面的“公共选项”部分中的示例所示<代码>echo$this->Form->input('component',array('default'=>'Sugar')当然你需要用
    $this->Number->precision($this->YourModelName->hotel\u costs,2)替换“Sugar”谢谢你的链接,马文。我能够通过在模型上创建一个
    afterFind()
    函数来解决这个问题,该函数根据您的评论在受影响的行上执行
    number\u format()