在活动状态按钮之前和之后检查按钮

时间:2019-05-09 14:38:23

标签: php html button smarty

我需要检查活动前和活动后的状态,以便在已执行的操作上打勾。

当前,这些操作以按钮形式列出,它检查以查看作业的活动状态,然后获取该活动的操作,列出所有其他操作,但不可单击。

<div class="card card">
  <div class="card-title card-white-title">Booking Actions</div>
  <div class="card-body">
    {foreach from=$booking_actions item=action}
      <button data-price="{$booking.est_price}" value="{$booking.reference}" id="{$action.integra_status}" class="btn btn-booking-control {$action.integra_action}{if $action.enabled == false} disabled action-disabled-btn{else} btn-success{/if}{if $action.show_on_portal == 'NO'} hidden{/if}" {if $action.enabled != false}onclick="javascript:performButtonAction('{$action.integra_action}', '{$action.integra_status}', '{$booking.reference}', '{$action.stop_ref}',this)"{/if}>
        {if $action.enabled == true}
          {$action.description} {$action.applies_to_desc}
            {else}
              {$action.description} {$action.applies_to_desc}  <div class="pull-right"><div class="fas fa-check"/></div>
           {/if}
        </button>
     {/foreach}
   </div>
</div>

我现在得到的是动作的完整列表,可单击的活动动作以及所有其他动作都带有勾号。

我想在当前活动之前获得一个动作,并在其后没有一个。 我知道我需要检查它的位置,我需要一个{while $ action.enabled!= true}之类的东西,但是我不确定在哪里需要它以及如何使其最佳工作..... < / p>

current outcome

wanted outcome

2 个答案:

答案 0 :(得分:0)

您可以在Smarty中分配和重新分配变量。在您的情况下,可以先将$showTick变量设置为true,然后在遇到第一个启用的操作时立即将其设置为false。这是一个最小的工作示例:

{$showTick=true}
{foreach $actions as $action}
  {if $action.enabled}
    {$showTick=false}
  {/if}
  <button class="btn {if $action.enabled}btn-success{else}disabled{/if}">
    {$action.description}
    {if $showTick}
      ✓
    {/if}
  </button>
{/foreach}

no ticks past the third item

答案 1 :(得分:0)

通过检查作业的当前状态并知道所需的操作来创建每个按钮,该按钮还将列出该作业可用的所有操作。 actions数组如下所示:

    [1]=>
      array(13) {
    ["reference"]=>
    string(2) "16"
    ["description"]=>
    string(7) "Decline"
    ["eventobject_id"]=>
    string(2) "37"
    ["status_flag"]=>
    string(1) "0"
    ["stop_ref"]=>
    string(1) "0"
    ["applies_to"]=>
    string(1) "1"
    ["integra_action"]=>
    string(12) "statusupdate"
    ["integra_status"]=>
    string(3) "DEC"
    ["other_event"]=>
    string(2) "36"
    ["show_on_portal"]=>
    string(3) "YES"
    ["applies_to_desc"]=>
    string(0) ""
    ["code"]=>
    string(0) ""
    ["enabled"]=>
    bool(false)
  }
  [2]=>
  array(13) {
    ["reference"]=>
    string(1) "6"
    ["description"]=>
    string(15) "Allocate Driver"
    ["code"]=>
    string(4) "SDRV"
    ["eventobject_id"]=>
    string(1) "6"
    ["status_flag"]=>
    string(1) "0"
    ["stop_ref"]=>
    string(1) "0"
    ["applies_to"]=>
    string(1) "1"
    ["integra_action"]=>
    string(18) "softallocatedriver"
    ["other_event"]=>
    string(1) "0"
    ["show_on_portal"]=>
    string(3) "YES"
    ["applies_to_desc"]=>
    string(0) ""
    ["integra_status"]=>
    string(0) ""
    ["enabled"]=>
    bool(true)
  }

如果动作为真且按钮为绿色且可单击,则有一个“启用的bool”。否则为否。

谁能看到我如何遍历这些按钮,如果按钮为false且在true动作按钮之前,则在该按钮上添加一个勾号,然后在活动状态之后但没有勾号的情况下列出按钮,因为这些动作将不会被单击?