我的页面上有多个表单,可以将商品添加到购物车中。这很有效,直到我向表单添加了2个动态创建的Dropdownfields。为了填补我改变的下拉列表
public function addToCart($title, $price) {}
到
public function addToCart($ID) {}
检查$ ID是否返回正确的值,我将$ ID推送到文本字段的值。
这是获取所有项目和表格的代码
public function getItems() {
return Item::get();
}
在模板中
<% loop getItems %>
...
$Top.addToCart($ID)
...
<% end_loop %>
如果我在我的函数中将$ ID设置为1,那么一切都按预期工作,但如果我使用我的标记返回的数据,则会收到三个错误。
我认为错误1是因为$item = Item::get()->byID($ID);
而错误2 + 3是因为下拉。
但为什么??
有人可以指出我正确的方向吗? 这是我的代码http://pastie.org/private/vnepfjt0pi5qehmoyqv1ag
提前谢谢!
修改
错误1:我已尝试将ID转换为Integre $ID = (int)$ID;
,但仍然存在相同的错误
答案 0 :(得分:0)
[Notice] Object of class SS_HTTPRequest could not be converted to int
DataList::byID()
可能会抛出期待数值。
这意味着您认为来自模板中$ID
的数字不是数字。
我不知道SS_List
生成的getItems()
看起来是什么,我只是在猜测,但如果您在模板中打印$ID
,我会打赌,它不会是一个数字。
也许getItems()
应该是从用户响应生成的SS_HTTPRequest
对象中获取数据,而你实际上是在错误的上下文中使用它?
要么在模板上下文中使用类似的方法(模板中的提示SS方法通常以大写字母开头),要么getItems()
适合自己使用。
另外,只是一些提示:
$colors = ColorObject::get()->filter(array('ItemID' => $ID));
不应该是:
$colors = ColorObject::get()->filter(array('ID' => $ID));
$colorSource = $colors->map('ID', 'Title’);
与:
相同$colorSource = $colors->map();
祝你好运,Russ