【发布时间】:2014-02-13 20:35:44
【问题描述】:
我正在使用 yiibooster,它是一个非常好的前端扩展,我现在的问题是我想删除在必填字段中呈现的红色 *,但在模型中保留所需的验证器,任何人都知道如何这样做????
谢谢
【问题讨论】:
标签: yii yii-extensions yii-booster
我正在使用 yiibooster,它是一个非常好的前端扩展,我现在的问题是我想删除在必填字段中呈现的红色 *,但在模型中保留所需的验证器,任何人都知道如何这样做????
谢谢
【问题讨论】:
标签: yii yii-extensions yii-booster
这是一个由必填字段验证器生成的标签示例:
<label for="User_email" class="required">
Email Address <span class="required">*</span>
</label>
因此,您可以通过将此类添加到您网站的 CSS 中来隐藏它:
span.required {
display: none;
}
【讨论】:
如果你想轻松实现你想要的,我建议你像下面这样,这是最简单的方法(在我看来):
只需尝试找到* 选择器(ID 或CLASS)名称。(使用萤火虫或任何检查器)
然后在您的document.ready() 中执行以下操作:
$(SELECTOR).remove();
注意事项
* 可能是动态创建的CHANGING THE CSS CLASS 以便执行 DISPLAY:NONE 或 SOURCE MODIFICATION
【讨论】:
<?php echo $form->textFieldGroup($model, 'username',array('label'=>Yii::t('model','Username'))); ?>
或从
编辑TbActiveForm.php的第1223行echo $this->labelEx($model, $attribute, $options['labelOptions']);
到
echo $this->label($model, $attribute, $options['labelOptions']);
【讨论】:
Red * 正在根据您的模型中的验证器定义添加。你有两个选择。
首先在您的模型中为您想要的属性添加On => 'scenario name' for required validator。所以你可以控制 yii-booster 组件的行为,因为它们只应用那些与模型的scenario 匹配的规则。例如:
array('password_repeat', 'required', 'on'=>'register'),
它只会在register 场景中显示Red *(如果您通过$model->setScenario('register'); 设置它),并且在正常情况下不会显示red *。
另一个选项是,当您根据模型中的验证器规则标记为 required 的属性创建表单元素时,您可以阻止 * 显示,但这种方式不会忽略validation rule,如果您尝试在此表单字段为空时提交表单,您将从 yii 收到错误(因为您只是解决显示问题,但在后台您有所需的验证器)。对于这种方法,您只需在yii-booster 表单元素中提供label:
<?php echo $form->textFieldGroup($model,'textField',
array(
'wrapperHtmlOptions' => array(
'class' => 'col-sm-5',
),
'hint' => 'In addition to freeform text, any HTML5 text-based input appears like so.',
>>>>> 'label' => 'Your new value for label which will have no red *',
)
); ?>
【讨论】: