PHP Ölümcül hata - Tanımsız fonksiyonu

3 Cevap

Bu biraz belirsiz olduğunu biliyoruz ama birisi bana doğru yönde işaret etmek mümkün olabilir umuduyla.

Bu hatadır: Fatal error: Call to undefined function print_row() on line 418

Bu hattı ile neden:

**$something = profile_display_fields($css->id);**

Bu kodu:

$customcss = get_records_select('user_info_field', '', 'sortorder ASC');

foreach ($customcss as $css) {
  if ($css->name == 'usercss') {
   $something = profile_display_fields($css->id);
  }
}

İşte satır 418 olduğunu:

print_row(s($formfield->field->name.':'), $formfield->display_data());

Ve burada bütün fonksiyonudur:

function profile_display_fields($userid) {
    global $CFG, $USER;

    if ($categories = get_records_select('user_info_category', '', 'sortorder ASC')) {
        foreach ($categories as $category) {
            if ($fields = get_records_select('user_info_field', "categoryid=$category->id", 'sortorder ASC')) {
                foreach ($fields as $field) {
                    require_once($CFG->dirroot.'/user/profile/field/'.$field->datatype.'/field.class.php');
                    $newfield = 'profile_field_'.$field->datatype;
                    $formfield = new $newfield($field->id, $userid);
                    if ($formfield->is_visible() and !$formfield->is_empty()) {
                        print_row(s($formfield->field->name.':'), $formfield->display_data());
                    }
                }
            }
        }
    }
}

3 Cevap

Bu kullanıcı / profile / lib.php tanımlanan moodle 's profile_display_fields () gibi görünüyor.

Print_rows () fonksiyonu kullanıcı / view.php tanımlanmıştır. Bu dosya önce profile_display_fields çağrısına () dahil olduğundan emin olun.

edit:

function print_row($left, $right) {
    echo "\n<tr><td class=\"label c0\">$left</td><td class=\"info c1\">$right</td></tr>\n";
}

O) print_rows "orijinal" tanım (bulunuyor. Eğer view.php user / profile / lib.php kullanıyorum ama değiliz yere durumunda bunu tanımlamak.

edit: ben bunu sevmiyorum, ama önlemek için koşullu bir işlev tanımını yapabilir "ölümcül hata: fonksiyon xyz yeniden ilan edemez"

if ( !function_exists('print_row') ) {
  function print_row($left, $right) {
    echo "\n<tr><td class=\"label c0\">$left</td><td class=\"info c1\">$right</td></tr>\n";
  }
}

Hata haklı i yere kod defined print_row fonksiyonunu bulamadı işaret edilmektedir. Bu işlev diğer bazı dosya, diğer dosyalar bu işlevi ararken denemek ve komut bu dosya dahil ve bu hata tekrar görünmeyecektir mevcut gibi bu işlev tanımlamak emin olun, o görünüyor.

Sizin kod bu hata ile başarısız çünkü:

  • print_row() PHP Core bir fonksiyonu parçası değildir
  • Hiç PHP uzantısı tanımlıyor print_row()
  • Sizin kod bu ifadenin yürütülmesinden önce print_row() adında bir işlevi tanımlı değil.

print_row() harici bir dosyada tanımlı ise, emin olun before fonksiyonunu çağırarak bu dosya bulunur emin olun.