在CakePHP输入

时间:2015-07-27 17:37:55

标签: css cakephp-3.0

我正在创建CakePHP 3.0表单,并且我有几个输入字段(Form-> input),用户将在其中输入美国货币的值。我想在输入框的左侧添加一个$符号。从我的研究来看,似乎CakePHP的Form本身并不支持这一点,所以我相信CSS解决方案是理想的。数据库中的相应字段是浮点数。

2 个答案:

答案 0 :(得分:0)

  

:before和:after应用于容器内,这意味着您可以将它用于带有结束标记的元素。

Source
基本上,这意味着您不能在输入之前使用,因为它会将内容插入到输入中 你可以使用CSS的:before伪元素来完成它,但是你必须将输入包装在一个元素中,或者在它之前放置一个元素:

.inputcon:before{
    content:'$'
}

或者,您可以使用jQuery:

$("input").wrap("<span class='inputcon'>");

或者使用Vanilla JS:

var inputs = document.getElementsByTagName("input");
for(var i =0;i<inputs.length;i++){
    var wrapper = document.createElement("span");
    wrapper.classList.add("inputcon")
    inputs[i].parentNode.insertBefore(wrapper,inputs[i]);
    wrapper.appendChild(inputs[i])
}

答案 1 :(得分:0)

听起来您想要覆盖输入模板以在输入字段之前包含$。默认输入模板为<input type="{{type}}" name="{{name}}"{{attrs}}>,因此它将更改为$ <input type="{{type}}" name="{{name}}"{{attrs}}>

http://book.cakephp.org/3.0/en/views/helpers/form.html#customizing-the-templates-formhelper-uses

你可以覆盖整个表单(可能不是你想要的),或者只是一个输入。本书中的大多数示例都向您展示了如何覆盖整个表单,但您可以仅覆盖该输入字段。 http://api.cakephp.org/3.0/class-Cake.View.Helper.FormHelper.html#_input

将字段本身限制为仅适用于货币的数字/符号是javascript / html5问题,与蛋糕分开。如果这是您想要的,您还应该使用cake验证服务器端。

此外,有点偏离主题,货币字段不应存储为数据库中的浮点数。它们应该存储为一些固定的精度类型(例如mysql中的十进制类型)。