【问题标题】:Dynamically add Yii form elements with jQuery使用 jQuery 动态添加 Yii 表单元素
【发布时间】:2015-10-09 07:40:36
【问题描述】:

在尝试将 Yii 生成的字段动态添加到我的表单时,我遇到了集成 Yii 和 jQuery 的问题。 也就是说,我静态地使用此代码在我的表单上有一个下拉列表:

echo $form->label($model,Yii::t('candidates', 'Contact type'));
$options = CHtml::listData(HrpContactTypes::model()->findAll(),'id','type');
 $ct = array();
 $b=1;
for($i=0;$i<=count($options)-1;$i++) {
    $ct[$b] = Yii::t('candidates', $options[$b]);
    $b++;
}
echo $form->dropDownList($model,'contact_type_id',$ct,array('class'=>'form-control'));

我使用此代码在我的表单上进行文本输入:

echo $form->label($model,Yii::t('candidates', 'Contact')); ?>
echo $form->textField($model,'contact', array('required'=>'required', 'class'=>'form-control' ));

然后,我使用这段代码将元素动态添加到我的表单中:

$('#addContact').click(function() {
        $('#row').append(
            '<br><div class="col-md-6">contact type</div><div class="col-md-6">contact</div>'
            );
        return false;
    });

我的问题是:如何在 JQuery 的帮助下动态添加 YII 下拉列表和 YII 文本输入?

【问题讨论】:

    标签: javascript php jquery forms yii


    【解决方案1】:

    首先请注意编码。

    1. CActiveForm::label()的第二个参数必须是属性,并且必须在你的模型类中翻译它(覆盖方法attributeLabels()),而不是形式:

      public functions attributeLabels() {
          return array(
              'candidates' => Yii::t('candidates', 'Contact type'),
              ATTRUBUTE_NAME => ATTRIBUTE_LABEL
          );
      }
      
    2. 了解loops in php。除了声明额外的变量$b,您还可以使用循环变量$i,您也可以从$optios 获取从1 开始的值,所以$ct 的最后一个元素总是null,我想你想这样写:

      $options = CHtml::listData(HrpContactTypes::model()->findAll(),'id','type');
      $ct = array();
      for($i=0; $i<count($options); $i++) {
          $ct[$i+1] = Yii::t('candidates', $options[$i]);
      }
      

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      相关资源
      最近更新 更多