我需要检查活动前和活动后的状态,以便在已执行的操作上打勾。
当前,这些操作以按钮形式列出,它检查以查看作业的活动状态,然后获取该活动的操作,列出所有其他操作,但不可单击。
<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>
答案 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}
答案 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动作按钮之前,则在该按钮上添加一个勾号,然后在活动状态之后但没有勾号的情况下列出按钮,因为这些动作将不会被单击?