【问题标题】:yii how to connect two optionsyii 如何连接两个选项
【发布时间】:2013-05-18 14:02:04
【问题描述】:

我有两个字段,第一个称为customer name,另一个称为customer id。怎么做才能达到这样的效果,当我在第一个文本字段中输入客户姓名时,第二个字段(可能是下拉列表)会在找到姓名后立即显示他/她的ID。

那么,谁能给我一个简单的例子来实现这个目的。非常感谢。

【问题讨论】:

    标签: jquery database yii


    【解决方案1】:

    创建一个包含所有客户名称的一维数组,例如array('Bob', 'Sally', 'Fred');

    然后您可以通过执行以下操作同时使用 CJuiAutoComplete 和 CHtml::dropDownList:

    $this->widget('zii.widgets.jui.CJuiAutoComplete',array(
        'attribute'=> 'Customer_name',
        'model' => $model,
        'sourceUrl' => array('customer/aclist2'),
        'options'=>array(
            'minLength'=>'1',
            'select' => "js: function(event, ui){ $('#".CHtml::activeId($model, 'Customer_id').").val(ui.item.value); }"
        ),
        'htmlOptions'=>array(
            'style'=>'height:20px;',
        ),
    ));
    echo CHtml::activeLabel($model, 'Customer_id');
    echo CHtml::activeDropDownList(
      $model,
      'Customer_id',
      CHtml::listData(Customer::model()->findAll(), 'Customer_name', 'Customer_id'
    ));
    

    您需要调整模型名称(客户)和属性(客户名称、客户 ID)以匹配您的名称。用我自己的数据测试。

    【讨论】:

    • 但是我发现出现错误信息:客户ID不能为空。事实上,当我输入相应的客户名称时,客户 ID 发生了变化,但是当我按下按钮将更改保存到数据库时,就会显示此错误消息。那么,如何解决这个问题。我好像yii无法识别下拉列表中的数据(但它实际上显示了相应的ID)。
    • 对不起,我没想到要提这个:当你为模型提交表单时,字段的 id 必须是这种格式 - Customer_Customer_id 并且字段的名称必须是这样格式 - Customer[Customer_id]。否则模型无法将其识别为其属性之一。当您使用 dropDownList 时,不会自动为您设置 id 和 name。您可以使用 activeDropDownList 解决此问题。我将在上面更新我的代码。您还需要调整 CJuiAutocomplete,所以我也会编辑该部分
    • 对不起,我不明白意思。您介意发布修改后的代码吗?非常感谢。
    • 我更改了上面的答案以获得更新的代码。我基于您发布的代码,因此属性应该是正确的。我没有包含周围的 div 或 Customer_name 标签,只是一个警告。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2017-11-28
    相关资源
    最近更新 更多