it-swarm.asia

إشعار: محاولة الحصول على خاصية غير كائن

هذا هو الرمز الخاص بي:

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

أطبع الحقل "name" باستخدام print $user_profile->name ، وأحصل على الخطأ التالي:

إشعار: محاولة الحصول على خاصية غير كائن في تضمين () (السطر 71 من SITE\sites\all\theme\parce\block - block - 2.tpl.php).

افترضت أن $user_profile لم يكن كائنًا وحاولت print render($user_profile['name']) ، والتي أعادتني:

خطأ فادح: لا يمكن استخدام كائن من النوع stdClass

ما الذي يجري؟ لقد تحققت من مرجع Drupal API ، و menu_get_object() يجب أن تعيد لي كائنًا.

5
silkAdmin

لم تطبع أرقام أسطر الخطأ الثاني ، لذا لا أعرف ما إذا كانت تحدث في نفس السطر. ربما إشعارك من شيء آخر.

ما يمكنك تجربته هو طباعة المتغير باستخدام print_r ، vardump ، debug أو استخدام الوحدة Devel التي تنشئ بعض وظائف الغلاف مثل dpm لطباعة المتغيرات باستخدام Krumo.

يجب أن يكون من المستحيل أن يكون نفس المتغير كائنًا وليس كائنًا في نفس الوقت. ولكن من الصعب قول المزيد بالمعلومات التي قدمتها.

التحديث:
من تعليقاتك ، أستطيع أن أرى لماذا تحصل على الأخطاء:

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

خطأ >> إشعار: فهرس غير محدد: und ...

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

Fatal >> لا يمكن استخدام كائن من النوع stdClass كصفيف

المشكلة كما أشرت في رسالة الخطأ هي أنه لم يتم تحديد und في قيمة الحقل. وبالتالي $user_profile->field_country لا بأس ولكن $user_profile->field_country['und'] غير محدد. قد يكون السبب هو أنه ليس لديه مجموعة قيمة أو أن لغة الحقل غير محددة. يجب أن اقترحت أعلاه ، اطبع المتغير لمعرفة ما يحتوي عليه.

4
googletorp

menu_get_object('user') يُرجع لك كائنًا فقط لعناوين URL محددة ؛ إذا كان عنوان URL للصفحة حيث تكون الكتلة مرئية http://example.com/node/1 ، فلن تعيدك الوظيفة كائنًا.

كما ورد في الوثائق:

يوفر menu_get_object() الوصول إلى الكائنات التي تم تحميلها بواسطة عنصر جهاز التوجيه الحالي. على سبيل المثال ، في عقدة الصفحة /٪ node ، يقوم جهاز التوجيه بتحميل كائن العقدة٪ ، وسيؤدي استدعاء menu_get_object() إلى إرجاع ذلك.

في حالتك ، يجب أن يتطابق عنوان URL للصفحة مع المستخدم /٪ المستخدم ، كما هو الحال في http://example.com/user/1 ، http://example.com/user/1/اختصارات ، http://example.com/user/1/devel .

لا يمكن أن تقوم الوظيفة أيضًا بإرجاع كائن عندما يتم عرض الكتلة في صفحة ملف تعريف المستخدم ، وإذا كانت هناك مشكلات في تحميل كائن المستخدم. في هذه الحالة ، لن يتم تصور صفحة ملف تعريف المستخدم بشكل صحيح أيضًا ، على ما أعتقد.

0
kiamlaluno