2014-03-19 18 views
0

我的頁面上有多個表單,用於將商品添加到購物車。這工作得很好,直到我將2個動態創建的Dropdownfields添加到Form中。爲了填補下拉框,我改變Silverstripe - 動態生成表單的多個問題

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. [注意]類SS_HTTPRequest的對象不能被轉換爲int
  2. [警告] mysqli的:: real_escape_string()預計參數1是字符串,給出
  3. [警告]的mysqli :: real_escape_string對象()期望參數1是字符串,對象給出

我認爲錯誤1是因爲$item = Item::get()->byID($ID);和錯誤2 + 3是因爲下拉菜單。

但是爲什麼?

有人可以請指出我在正確的方向嗎? 這是我的代碼http://pastie.org/private/vnepfjt0pi5qehmoyqv1ag

預先感謝您!

編輯

出錯1:我已經嘗試過的ID轉換成Integre $ID = (int)$ID;,但仍是同樣的錯誤

回答

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(); 

祝你好運,拉斯

+0

喜,getItems()是這樣的 '退貨項目::得到();'它只是返回所有存儲的項目。我已經試圖轉換ID這樣$ ID =(int)$ ID;但現在運氣好。仍然是同樣的錯誤。有任何想法嗎? $顏色是正確的,因爲我想獲取爲這個Item存儲的所有顏色。 – invictus