我意识到这有点模糊,但希望有人能指出我正确的方向。
这是错误:致命错误:在第418行调用未定义函数print_row()
原因是这一行:
**$something = profile_display_fields($css->id);**
在此代码中:
$customcss = get_records_select('user_info_field', '', 'sortorder ASC');
foreach ($customcss as $css) {
if ($css->name == 'usercss') {
$something = profile_display_fields($css->id);
}
}
这是第418行:
print_row(s($formfield->field->name.':'), $formfield->display_data());
以下是整个功能:
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());
}
}
}
}
}
}
答案 0 :(得分:2)
错误指向正确,我在代码中的某处找不到函数print_row
已定义。确保定义该函数,看起来该函数存在于其他文件中,尝试在其他文件中搜索此函数并在脚本中包含该文件,此错误不会再次显示。
答案 1 :(得分:1)
看起来像moodle的profile /display_fields()在user / profile / lib.php中定义。
print_rows()函数在user / view.php中定义。确保在调用profile_display_fields()之前包含此文件。
编辑:
function print_row($left, $right) {
echo "\n<tr><td class=\"label c0\">$left</td><td class=\"info c1\">$right</td></tr>\n";
}
这是print_rows()的“原始”定义。如果您正在使用user / profile / lib.php而不是view.php。
,请将其定义编辑:我不喜欢它,但你可以使函数定义有条件避免“致命错误:无法重新声明函数xyz”
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";
}
}
答案 2 :(得分:0)
您的代码因此错误而失败,因为:
print_row()
不是PHP Core的功能部分print_row()
print_row()
的函数。如果在外部文件中定义print_row()
,请确保在调用该函数之前包含此文件。