web-gelistirme-sc.com

Uyarı: Nesne dışı özelliğini almaya çalışmak

İşte benim kod:

function THEME_preprocess_block(&$variables) {
    $variables['user_profile'] = menu_get_object('user');
}

Alan adını print $user_profile->name Kullanarak yazdırıyorum ve aşağıdaki hatayı alıyorum:

Uyarı: include () içinde nesne olmayan bir özellik elde etmeye çalışılıyor (SITE\sites\all\themes\parce\block - block - 2.tpl.php dosyasının 71. satırı).

$user_profile Bir nesne değildi ve beni döndüren print render($user_profile['name']) denedim:

Önemli hata: stdClass türündeki nesne kullanılamıyor

Ne oluyor? Drupal API referansını kontrol ettim ve menu_get_object() bana bir nesne döndürmeli.

5
silkAdmin

İkinci hatanın satır numaralarını yazdırmadınız, bu yüzden aynı satırda olup olmadıklarını bilmiyorum. Belki de bildiriminiz başka bir şeydir.

Deneyebileceğiniz şey print_r, vardump, debug veya Krumo ile değişkenleri yazdırmak için dpm gibi bazı sarmalayıcı işlevler oluşturan Devel modülünü kullanın.

Aynı değişkenin bir nesne olması ve aynı zamanda bir nesne olmaması imkansız olmalıdır. Ancak verdiğiniz bilgilerle daha fazlasını söylemek zor.

Güncelleme:
Yorumlarınızdan neden hataları aldığınızı görebiliyorum:

print $user_profile->field_country['und']['0']['value'];

Hata >> Uyarı: Tanımsız dizin: und ...

print $user_profile['field_country']['und']['0']['value'];

Fatal >> stdClass türünde bir nesne dizi olarak kullanılamaz

Hata iletisinde işaretlediğim gibi sorun alan değerinde und tanımlanmamış olmasıdır. Yani $user_profile->field_country tamam ama $user_profile->field_country['und'] tanımsız. Bunun nedeni, bir değer kümesinin olmaması veya alanın dilinin tanımlanmamış olması olabilir. Yukarıda önerdiğim gibi olmalısın, ne içerdiğini görmek için değişkeni yazdır.

4
googletorp

menu_get_object('user') size yalnızca belirli URL'ler için bir nesne döndürür; bloğun görünür olduğu sayfanın URL'si http://example.com/node/1 ise, işlev size bir nesne döndürmez.

Belgelerde bildirildiği gibi:

menu_get_object() geçerli yönlendirici öğesi tarafından yüklenen nesnelere erişim sağlar. Örneğin, sayfa düğümü /% düğümünde, yönlendirici% düğüm nesnesini yükler ve menu_get_object() çağrısı bunu döndürür.

Sizin durumunuzda, sayfa URL'si http://example.com/user/1 , http://example.com gibi) kullanıcı /% kullanıcıyla eşleşmelidir./kullanıcı/1/kısayollar , http://example.com/user/1/devel .

Blok, bir kullanıcı profili sayfasında gösterilirken ve kullanıcı nesnesini yüklerken sorun olduğunda işlev bir nesneyi döndüremedi. Bu durumda, kullanıcı profili sayfası da doğru şekilde görselleştirilmez diye düşünüyorum.

0
kiamlaluno