it-swarm-id.com

Perhatikan: Mencoba untuk mendapatkan properti dari non-objek

Ini kode saya:

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

Saya mencetak "nama" bidang menggunakan print $user_profile->name, Dan saya mendapatkan kesalahan berikut:

Perhatian: Mencoba mendapatkan properti non-objek di include () (baris 71 dari SITE\sites\all\themes\parce\blok - blok - 2.tpl.php).

Saya berasumsi $user_profile Bukan objek dan saya mencoba print render($user_profile['name']), yang mengembalikan saya:

Kesalahan fatal: Tidak bisa menggunakan objek tipe stdClass

Apa yang sedang terjadi? Saya memeriksa Drupal referensi API, dan menu_get_object() harus mengembalikan saya sebuah objek.

5
silkAdmin

Anda tidak mencetak nomor baris kesalahan kedua jadi saya tidak tahu apakah itu terjadi pada baris yang sama. Mungkin pemberitahuan Anda berasal dari hal lain.

Apa yang bisa Anda coba adalah mencetak variabel menggunakan print_r, vardump, debug atau gunakan modul Devel yang membuat beberapa fungsi pembungkus seperti dpm untuk mencetak variabel dengan Krumo.

Seharusnya tidak mungkin bahwa variabel yang sama adalah objek dan bukan objek pada saat yang sama. Tetapi sulit untuk mengatakan lebih banyak dengan info yang Anda berikan.

Pembaruan:
Dari komentar Anda, saya bisa melihat mengapa Anda mendapatkan kesalahan:

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

Kesalahan >> Pemberitahuan: Indeks tidak terdefinisi: und ...

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

Fatal >> Tidak dapat menggunakan objek tipe stdClass sebagai array

Masalah yang saya tandai dalam pesan kesalahan adalah und tidak didefinisikan dalam nilai bidang. Jadi $user_profile->field_country tidak apa-apa tapi $user_profile->field_country['und'] tidak terdefinisi. Alasannya mungkin karena tidak memiliki nilai yang ditetapkan atau bahwa bahasa untuk bidang tersebut tidak ditentukan. Anda harus menyukai yang saya sarankan di atas, mencetak variabel untuk melihat isinya.

4
googletorp

menu_get_object('user') mengembalikan Anda hanya objek untuk URL tertentu; jika URL halaman tempat blok terlihat http://example.com/node/1 , maka fungsinya tidak akan mengembalikan Anda sebuah objek.

Seperti yang dilaporkan dalam dokumentasi:

menu_get_object() menyediakan akses ke objek yang dimuat oleh item router saat ini. Misalnya, pada simpul halaman /% simpul, router memuat objek% simpul, dan memanggil menu_get_object() akan mengembalikannya.

Dalam kasus Anda, URL halaman harus cocok dengan pengguna /% pengguna, seperti dalam kasus http://example.com/user/1 , http://example.com/user/1/pintas , http://example.com/user/1/devel .

Fungsi juga tidak bisa mengembalikan objek ketika blok ditampilkan di halaman profil pengguna, dan jika ada masalah memuat objek pengguna. Dalam hal ini, halaman profil pengguna tidak akan divisualisasikan dengan benar juga, saya kira.

0
kiamlaluno