添加创建Yii框架新的链接下拉列表

问题描述:

我在Yii框架新手,在Yii Framework做一个小的应用程序,我有数据库InvoiceCustomers这样添加创建Yii框架新的链接下拉列表

==== Invoice ==== 
    id 
    customer_id 
    invoice_title 
    invoice_no 
    invoice_issue_date 
    created_by 
    updatd_by 

    === Customers === 
    id 
    customer_name 
    address 
    business_address 
    city 
    state 

现在按我的需求量的我需要所有可用的客户名称应该来的dropdown列表发票创建形式,所以我作出Invoice form.php变化调用所有可用的客户名称,比如这个

<div class="row"> 
<?php echo $form->labelEx($customers,'customer_name'); ?> 
<?php echo $form->dropdownList($customers,'customer_name', CHtml::listData(Customers::model()->findAll(), 'id', 'customer_name'), array('empty'=>'Choose one')); ?> 
<?php echo $form->error($customers,'customer_name'); ?> 
</div> 

它显示从customer table可用customers name。但我需要更多的一件事。这就是它会显示一个额外的链接在下拉,称为Create One。在管理员将点击此链接和一个lightbox将与create customer form来所有输入的数据将保存在customer table。我也上传了一些图片以供参考。任何帮助和建议都将非常可观。参考图片已经上传到这里。 enter image description here

[更新] 我已经向前一步,并取得这改变

<div class="row"> 
     <?php echo $form->labelEx($customers,'customer_name'); ?> 
     <div id="job"> 
     <?php echo $form->dropDownList($customers,'customer_name',CHtml::listData(Customers::model()->findAll(),'id','customer_name'),array('prompt'=>'Select')); ?> 
     <?php echo CHtml::ajaxLink(Yii::t('customers','Create customers'),$this->createUrl('customers/create'),array(
     'onclick'=>'$("#customers").dialog("open"); return false;', 
     'update'=>'#jobDialog' 
    ),array('id'=>'showJobDialog'));?> 
    <div id="jobDialog"></div> 
    </div> 
    </div> 

这是工作,但我想在下拉列表中没有dropdown.So外内create Customers链接怎么办那?任何帮助和建议都会非常明显。

+0

就像我说的,你可以有多个空白的项目在你的选择,并用JavaScript可以显示/隐藏对话框窗口,如果一个特定的项目是选择。我更新了我的答案,我不能说比这更清楚。 – adamors 2012-04-02 08:21:22

你可以创建一个与标签新客户空选择项目,这样

$form->dropdownList($customers,'customer_name', CHtml::listData(Customers::model()->findAll(), 'id', 'customer_name'), array('empty'=>array('choose'=>'Choose one','new'=>'New Client'))) 

,并有如果选择“新客户”一个jQuery功能待机,触发一个灯箱弹出。

$('your_select').change(function(){ 
    if($(this).val() == 'new') { 
    // do something 
    } 
}) 

更新,以反映您的更新

<?php 
    echo $form->dropDownList(
        $customers,'customer_name', 
        CHtml::listData(Customers::model()->findAll(), 'id', 'customer_name'), 
        array('prompt'=>'Select', 'empty'=>array('choose'=>'Choose'), 'id'=>'customersSelect') 
      ); 
?> 

<script type='text/javascript'> 
    $(document).ready(function(){ 
     $('#customersSelect').change(function(){ 
      if($(this).val() == 'choose') { 
      $("#customers").dialog("open"); 
      } 
     }); 
    }); 
</script> 
+0

在这一行'$ form-> dropdownList($ customers,'customer_name',CHtml :: listData(Customers :: model() - > findAll(),'id','customer_name'),array('empty'= > array(''=>'选择一个','new'=>'New Client'))'New Client'在下拉列表中不可见 – NewUser 2012-03-29 10:01:17

+0

我认为这是因为我没有为第一个选项,而且最后还有一个支架丢失了。更新了,现在试试:) – adamors 2012-03-29 11:06:36

+0

您更新的代码不工作,它没有显示新客户端选项。 – NewUser 2012-04-02 13:59:30