2016-06-13 89 views
1

林相當新的PHP上,和IM卡在下面......Drupal的:致命錯誤:調用一個成員函數的格式()非對象

目前我已在申報日期爲字符串,但是這些將由用戶使用日期選擇器來輸入。

function availability_status($updated_node, $start_date, $end_date, $status) { 

    // get the fields we need. 
    $cid = $updated_node; 
    $sid = $status; 
    $from = DateTime::createFromFormat("Y-m-d h:i:s", $start_date); 
    $to = DateTime::createFromFormat("Y-m-d h:i:s", $end_date); 

    // change the state to the one selected; 
    availability_calendar_update_availability($cid, $sid, $from, $to); 

} 

我得到的錯誤「致命錯誤:調用一個成員函數的格式(c)中的非對象上:\ WAMP \ WWW \預訂\網站\所有\模塊\的contrib \ availability_calendars \ availability_calendar。 INC上617" 行,這是...

->condition('date', array($from->format(AC_ISODATE), $to->format(AC_ISODATE)), 'BETWEEN') 

我不能去改變這一行,因爲我想擴展此模塊,不能重寫,所以一定有什麼毛病我設置的方式第一位代碼中的日期爲$from$to

任何人都可以幫忙嗎?

+1

'的var_dump($從,到)'要將其傳遞到可用性功能之前,看你什麼結束了。如果日期未能正確解析,'createFromFormat'可以返回布爾值false。 –

+0

string'2016-06-15 16:15:53'(length = 19) string'to'(length = 2) – Collins

+0

'$ to',sorry。他們應該回來作爲日期時間對象,而不是字符串。 –

回答

1

的問題是日期即將來臨通過作爲UNIX時間戳和不是日期對象。

工作代碼...

function availability_calendars_rules_rules_action_set_availability_status($updated_calendar, $start_date, $end_date, $status) { 

    // get the fields we need. 
    $cid = $updated_calendar; 
    $sid = $status; 
    $from = date('Y-m-d H:i:s', $start_date); 
    $from = DateTime::createFromFormat("Y-m-d H:i:s", $from); 
    $to = date('Y-m-d H:i:s', $end_date); 
    $to = DateTime::createFromFormat("Y-m-d H:i:s", $to); 

    // change the state to the one selected; 
    availability_calendar_update_availability($cid, $sid, $from, $to); 

    drupal_set_message('Status has been set to '. $sid); 

} 
0

從我發現的manual和我的直覺看來,使用雙引號導致createfromformat()函數以字符串形式返回輸出。使用單引號應該將其作爲對象返回。

具體來說:

$from = DateTime::createFromFormat('Y-m-d h:i:s', $start_date); 
$to = DateTime::createFromFormat('Y-m-d h:i:s', $end_date); 
+0

沒有沒有工作,var_dump($ from,$ to)給布爾值false boolean false – Collins

+0

這很奇怪。根據我鏈接的手冊,單引號工作正常。你可以嘗試編碼日期,看看是否有效? '$ from = DateTime :: createFromFormat('Y-m-d h:i:s','2016-06-15 16:15:53'); $ to = DateTime :: createFromFormat('Y-m-d h:i:s','2016-06-17-16:15:53');' –

+0

是啊同樣的boolean false。嗯。我究竟做錯了什麼? – Collins

相關問題