加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

CakePHP:具有不同html属性的多个复选框

发布时间:2020-12-13 17:24:54 所属栏目:PHP教程 来源:网络整理
导读:情况如下: 我有表阶段具有以下结构 | id | name | editable| ----------------------------------------------------------------------------- | open | Open | 1 | | paysheet_review | Paysheet Submitted (Awaiting Office Approval) | 0 | | to_pay |
情况如下:

我有表阶段具有以下结构

| id              |  name                                         | editable|
 -----------------------------------------------------------------------------
 | open            | Open                                          |    1    | 
 | paysheet_review | Paysheet Submitted (Awaiting Office Approval) |    0    | 
 | to_pay          | Paysheet Approved (Awaiting Payment)          |    0    | 
 | paid            | Paid                                          |    1    | 
 | purgatory       | Flip or Refund                                |    0    | 
 | closed          | Deal Closed                                   |    1    |
 -----------------------------------------------------------------------------

我正在创建一个多重复选框块

在控制器中

<?php $_stages = $this->Stage->find("list");?>

在视图中

<?php echo $this->Form->input("stage",array("multiple" => "checkbox","options" => $_stages));?>

这会创建以下html

<div class="control-group">
 <label class="control-label" for="DealStage">Stage</label>
   <input type="hidden" value="" id="DealStage_" name="data[Deal][stage]">
 <div class="controls">
    <label class="checkbox"><input type="checkbox" id="DealStageOpen" value="open" name="data[Deal][stage][]">Open</label>
    <label class="checkbox"><input type="checkbox" id="DealStagePaysheetReview" value="paysheet_review" name="data[Deal][stage][]">Paysheet Submitted (Awaiting Office Approval)</label>
    <label class="checkbox"><input type="checkbox" id="DealStageToPay" value="to_pay" name="data[Deal][stage][]">Paysheet Approved (Awaiting Payment)</label>
    <label class="checkbox"><input type="checkbox" id="DealStagesPaid" value="paid" name="data[Deal][stage][]">Paid</label>
    <label class="checkbox"><input type="checkbox" id="DealStagePurgatory" value="purgatory" name="data[Deal][stage][]">Flip or Refund</label>
    <label class="checkbox"><input type="checkbox" id="DealStageClosed" value="closed" name="data[Deal][stage][]">Deal Closed</label>
  </div>
</div>

现在我想将editablefrom数据库列作为每个复选框的标题传递.
有没有办法在CakePHP中创建一个多重复选框,并将标题作为属性添加到每个输入类型复选框.这样我就可以使用jQuery来检查或取消选中只能编辑的阶段.

解决方法

生成单个复选框

如果在一次调用中生成了复选框,则无法为复选框提供单独的属性,但是可以轻松地单独生成每个复选框.为此,请确保将阶段数据传递给视图:

// in Controller action
$stages = $this->Stage->find("all");
$this->set('stages',$stages);

在视图中,只需遍历$stages变量即可生成复选框:

// in view file
foreach ($stages as $stage) {
     $id = $stage['Stage']['id'];
     $name = $stage['Stage']['name'];
     $editable  = $stage['Stage']['editable'];

     echo $this->Form->input(
         'Deal.stage.' . $id,['value' => $id,'label' => $name,'type' => 'checkbox','data-editable' => $editable]
     );
}

我不太关注你想用这个可编辑属性做什么 – 但是从js访问它会是:

// in js file
$('input[type=checkbox]'].each(function() {
    var editable = $(this).data('editable');

    ...
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读