在订购程序中,我有一个步骤,可以选择多个选项来添加订单。我将其存储在会话中,以便它显示在我的购物车和订单摘要中。
我现在的问题是,我的代码只能添加一个选项。但是,需要添加多个选项。
目前的情况是,订购流程中的每一步都有一个view.html.php和一个default.php(控制器和视图)。
对于流程中的这个特定步骤(添加选项),我最终得到了以下代码:
在view.html.php中:
if(JRequest::getVar('reset')) {
unset ($_SESSION['selectedoptions'][$plan->id]);
$mainframe->redirect(html_entity_decode(JRoute::_( '$url')));
}
elseif(JRequest::getVar('add')){
$_SESSION['selectedoptions'][] = $plan->id;
$mainframe->redirect(html_entity_decode(JRoute::_( '$url')));
}
在default.php中:
<?php if(isset($_SESSION['selectedoptions'][$plan->id])): ?>
<input class="btn-address btn-address-text" type="submit" name="reset" value="Verwijderen" />
<?php else: ?>
<input class="btn-address btn-address-text" type="submit" name="add" value="Toevoegen" />
<?php endif; ?>
我希望功能为数组添加一个选项,以便稍后我可以读取数组值来显示所选的项目。我做错了什么?
希望有人能帮助我,提前谢谢!
答案 0 :(得分:0)
您检查值是否存在错误的方式。
你这样做:
<?php if(isset($_SESSION['selectedoptions'][$plan->id])): ?>
你应该做
<?php if(in_array($plan->id, $_SESSION['selectedoptions'])): ?>
修改强>
但是也可能同样寻找unset
,你设置这个值是错误的。
而不是:
$_SESSION['selectedoptions'][] = $plan->id;
你应该这样做:
$_SESSION['selectedoptions'][$plan->id] = 1;
然后default.php
中的代码应该正常工作
<强> EDIT2 强>
在default.php文件中添加:
<input type="hidden" name="plan_id" value="<?php echo $plan->id; ?>" />
在您展示的代码的开头。
在viev.html.php中,您应该将代码更改为:
if(JRequest::getVar('reset')) {
unset ($_SESSION['selectedoptions'][JRequest::getVar('plan_id')]);
$mainframe->redirect(html_entity_decode(JRoute::_( '$url')));
}
elseif(JRequest::getVar('add')){
$_SESSION['selectedoptions'][JRequest::getVar('plan_id')] = 1;
$mainframe->redirect(html_entity_decode(JRoute::_( '$url')));
}