2014-10-11 36 views
0

Hy,PHP'&&'運營商問題或誤解

我正在開發一個基於PHP和CodeIgniter的小型站點。今天我遇到了一個非常非常奇怪的行爲。我有下面的代碼來檢查字段填或不:

$valid = isset ($model->{$property}) && !empty($model->{$property}); 
error_log ($valid); 

我期待「$有效」是真實的,如果「$模式 - > {}財產」 exsists而不是空的。不幸的是,無論屬性是否存在,我都從'error_log()'函數獲得以下輸出:是否有值:

[Sat Oct 11 19:49:43 2014] [error] [client 192.168.2.68] , referer: http://192.168.2.248:8080/ 

什麼是錯?有沒有其他(更好的)方法來檢查是否存在一個屬性填充?

+0

'!empty'是'isset &&別名!',這意味着它的設置,而不是falsy。如果您正在測試'!empty',則不需要手動測試'isset'。 – 2014-10-11 19:31:04

回答

0

對不起愚蠢的問題:我錯了。我通過AJAX發佈的模型實際上不包含預期的字段。

我在我的JS代碼中發現了這個問題。我試着用下面的命令來發布表單數據:

var formData = $(form).serialize(); 

$(form + " :input").attr("disabled", true); 
$.ajax({ 
    type: 'POST', 
    url: action, 
    data: formData, 
    dataType: "json", 
    success: postSuccess, 
    error: postFail 
    }); 

我因子評分$(形式).serialize()從表單中提取值,我能夠禁用輸入字段。不幸的是,我必須把禁止輸入惡魔 Ajax調用後正確地傳遞值(.serialize()忽略禁用字段)