【问题标题】:Add create new link in Yii Framework drop down list在 Yii 框架下拉列表中添加创建新链接
【发布时间】:2012-03-29 05:38:31
【问题描述】:

我是 Yii 框架的新手,在 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>

它显示了来自customer table 的可用customers name。但我还需要一件事。那就是它将在下拉列表中显示一个名为Create One 的附加链接。管理员将点击此链接和一个lightbox 将与create customer form 一起提供,输入的所有数据将保存在customer table 中。我还上传了一些图片以供参考。任何帮助和建议将非常可观。参考图片已上传至此处。@ 987654321@

[更新] 我已经向前迈进了一步并做出了这些改变

   <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 链接在下拉列表中而不是在下拉列表之外。那么如何做到这一点?任何帮助和建议都将非常受欢迎。

【问题讨论】:

  • 就像我说的,你可以在你的选择中有多个空白项目,如果选择了一个特定的项目,你可以使用 javascript 显示/隐藏一个对话框窗口。我更新了我的答案,我不能比这更清楚了。

标签: yii


【解决方案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>

【讨论】:

  • $form-&gt;dropdownList($customers,'customer_name', CHtml::listData(Customers::model()-&gt;findAll(), 'id', 'customer_name'), array('empty'=&gt;array(''=&gt;'Choose one','new'=&gt;'New Client')) 这一行中,New Client 在下拉列表中不可见。
  • 我认为是因为我没有为第一个选项添加值。此外,最后还缺少一个括号。更新了,赶紧试试吧:)
  • 您更新的代码不起作用。它没有显示新客户端选项。
  • 尝试使用 CHtml::dropDownList 而不是 ActiveForm 的 dropDownList。 TBH,我用前者测试了代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
相关资源
最近更新 更多