在Yii Framework下拉列表中添加创建新链接

时间:2012-03-29 05:38:32

标签: yii

我是Yii Framework的新手,在Yii Framework做一个小应用程序,我有InvoiceCustomers这样的数据库

   ==== 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>

它显示了来自customers name的可用customer table。但我还需要一件事。那就是它会在下拉列表中显示一个名为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>

它正在工作但是我希望下拉列表中的create Customers链接不在下拉列表之外。那么怎么做?任何帮助和建议都会非常明显。

1 个答案:

答案 0 :(得分:1)

您可以使用标签New Client创建一个空的选择项,如此

$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>