2013-07-20 33 views
0

這裏是我的單元測試代碼...不含脂肪框架沒有更新記錄

public static function member_put($f3,$args) { 
    // Id is for member: locohost 
    $f3->mock('PUT /member/c4774904-f15f-11e2-b7e4-00ffe024bd0b', array(
     'firstname' => 'Not-Mark', 
     'lastname' => 'Not-Deibert' 
    )); 
} 

這裏是被稱爲會員模型把方法...

public static function put($f3,$args) { 
    self::validateArgs($args); 
    self::validatePost(); 
    self::findById($args['id']); 
    self::$member->copyFrom('POST'); 
    //var_dump(self::$member); 
    self::$member->save(); 
    self::returnModel(); 
} 

會員put方法如預期的那樣被調用,但是成員沒有從copyFrom('POST')獲得新的名稱字段。 var_dump仍然在名稱字段中顯示舊值。我究竟做錯了什麼?

回答

3

$ _POST僅適用於POST方法。 對於其他方法(PUT,PATCH,DELETE)以及POST和GET,http請求體存儲在BODY變量中。

因此您的put()函數應該像這樣:

public static function put($f3,$args) { 
    self::validateArgs($args); 
    self::validatePost(); 
    self::findById($args['id']); 
    parse_str($f3->get('BODY'),$input); 
    $f3->set('INPUT',$input); 
    self::$member->copyFrom('INPUT'); 
    //var_dump(self::$member); 
    self::$member->save(); 
    self::returnModel(); 
} 

注意,請求體是一個查詢字符串的形式:firstname=Not-Mark&lastname=Not-Deibert。這就解釋了爲什麼需要使用parse_str來解析它。

+0

是的工作,謝謝! – Locohost