Php Silverstripe-动态生成表单存在多个问题
我的页面上有多个表单,可以向购物车添加物品。在我向表单中添加了2个动态创建的下拉字段之前,这一切都很好。为了填充我更改的下拉列表Php Silverstripe-动态生成表单存在多个问题,php,forms,silverstripe,Php,Forms,Silverstripe,我的页面上有多个表单,可以向购物车添加物品。在我向表单中添加了2个动态创建的下拉字段之前,这一切都很好。为了填充我更改的下拉列表 public function addToCart($title,$price){} 到 公共函数addToCart($ID){} 为了检查$ID是否返回正确的值,我将$ID放在一个textfield的值中 这是获取所有项目和表单的代码 public function getItems() { return Item::get(); } 模板中 <
public function addToCart($title,$price){}
到
公共函数addToCart($ID){}
为了检查$ID是否返回正确的值,我将$ID放在一个textfield的值中
这是获取所有项目和表单的代码
public function getItems() {
return Item::get();
}
模板中
<% loop getItems %>
...
$Top.addToCart($ID)
...
<% end_loop %>
...
$Top.addToCart($ID)
...
如果我在函数中将$ID设置为1,那么一切都会像预期的那样工作,但是如果我使用标记返回的数据,我会收到三个错误
$item=item::get()->byID($ID)代码>和错误2+3是因为下拉列表
但是为什么呢
有人能给我指一下正确的方向吗?
这是我的密码
提前谢谢你
编辑
错误1:我已经尝试将ID转换为整数$ID=(int)$ID代码>但仍然是相同的错误
[Notice] Object of class SS_HTTPRequest could not be converted to int
很可能由需要数值的DataList::byID()
引发
这意味着您认为来自模板中$ID
的数字不是数字
在不知道由getItems()
生成的SS\u列表是什么样子的情况下,我只是在猜测,但我敢打赌,如果您在模板中打印$ID
,它肯定不是一个数字
也许getItems()
应该是从用户响应生成的SS\u HTTPRequest
对象获取数据,而您实际上是在错误的上下文中使用它
或者在模板上下文中寻找类似的方法(提示我们在模板中的SS方法通常以大写字母开头),或者改编getItems()
,供您自己使用
此外,还有一些提示:
$colors = ColorObject::get()->filter(array('ItemID' => $ID));
这不应该是:
$colors = ColorObject::get()->filter(array('ID' => $ID));
?
同:
$colorSource = $colors->map();
祝你好运,Russ嗨,getItems()这是“return Item::get();”吗它只返回所有存储的项目。我已经尝试过像这样转换ID$ID=(int)$ID;但现在运气好了。还是一样的错误。有什么想法吗$颜色是正确的,因为我想为该项目存储所有颜色。
$colorSource = $colors->map();