Примечание. Свойство Undefined: ошибка stdClass во внешнем интерфейсе.

Я не могу понять, как определить эту строку. Если кто-то может предложить assiatnce, который был бы признателен, вероятно, что-то очень простое.

Эта строка: $value = $value->published;

Продолжает выдавать мне эту ошибку - Обратите внимание: свойство Undefined: stdClass::$published

public static function published($value, $i, $img1 = 'tick.png', $img0 = 'publish_x.png', $prefix = '')
{var_dump($value); die();
    if (is_object($value))
    {
        $value = $value->published;
    }

    $img = $value ? $img1 : $img0;
    $task = $value ? 'unpublish' : 'publish';
    $alt = $value ? JText::_('JPUBLISHED') : JText::_('JUNPUBLISHED');
    $action = $value ? JText::_('JLIB_HTML_UNPUBLISH_ITEM') : JText::_('JLIB_HTML_PUBLISH_ITEM');

    $href = '
    <a href="#" onclick="return listItemTask(\'cb' . $i . '\',\'' . $prefix . $task . '\')" title="' . $action . '">'
        . JHtml::_('image', 'admin/' . $img, $alt, null, true) . '</a>';

    return $href;
}

person Matt Weick    schedule 15.09.2013    source источник


Ответы (2)


Эти строки не имеют особого смысла:

$value = new stdClass();
$value = $value->published; // attempt to read from an undefined property

Вы создаете чистый объект без свойств, а затем пытаетесь прочитать из него - отсюда и ошибка. Для чего предназначены эти строки?

Если бы мне пришлось нанести удар в темноте, попробуйте удалить $value = new stdClass(); и посмотреть, сработает ли это теперь. Я предполагаю, что вы хотите, чтобы первый параметр вашей функции published() принимал либо логическое значение, либо объект.

person George Brighton    schedule 15.09.2013
comment
Хорошо, я удалил $value - new stdClass(); строку, и я все еще получаю это сообщение об ошибке: - person Matt Weick; 15.09.2013
comment
Вот новый код: if (is_object($value)) { $value = $value-›published; } - person Matt Weick; 15.09.2013
comment
Сообщение об ошибке не пришло. Можете ли вы поставить var_dump($value); die(); вверху своей функции и добавить вывод к своему вопросу? - person George Brighton; 15.09.2013
comment
Все еще получаю это сообщение об ошибке: Обратите внимание: свойство Undefined: stdClass::$published - person Matt Weick; 15.09.2013
comment
Вам нужно добавить код в моем последнем комментарии внутри тела метода, т.е. после { в строке перед if (is_object($value)). - person George Brighton; 15.09.2013
comment
Хорошо, я внес изменения и отразил их выше. После применения этого и перезагрузки страницы страница загружается только с текстовыми символами без графического оформления и выглядит очень прикольно, поэтому я убрал эту строку, она все еще находится в моем коде выше, так что вы можете видеть. - person Matt Weick; 15.09.2013
comment
Выглядело бы некрасиво - печатает $value. К сожалению, мне нужен этот напуганный вывод, чтобы помочь вам в дальнейшем. Если вы не хотите добавлять его к своему вопросу, поместите его на Pastebin. - person George Brighton; 15.09.2013
comment
Вам нужно дать больше контекста. Если вы сделаете var_dump($value), существует ли опубликованное свойство? Если вы находитесь в joomla, скорее всего, вы находитесь в одной из ужасных ситуаций, будь то опубликовано или это состояние, поэтому попробуйте также сказать $value-›state. Является ли значение строкой данных из вашей базы данных joomla? - person Elin; 16.09.2013

Попробуйте использовать функцию property_exists() PHP или используйте isset($value->published):

public static function published($value, $i, $img1 = 'tick.png', $img0 = 'publish_x.png', $prefix = '')
{
    if (is_object($value) && property_exists($value,'published'))
    {
        $val = $value->published;
        if(isset($val)) 
        {
            $img = $val ? $img1 : $img0;
            $task = $val ? 'unpublish' : 'publish';
            $alt = $val ? JText::_('JPUBLISHED') : JText::_('JUNPUBLISHED');
            $action = $val ? JText::_('JLIB_HTML_UNPUBLISH_ITEM') : JText::_('JLIB_HTML_PUBLISH_ITEM');

            $href = '<a href="#" onclick="return listItemTask(\'cb' . $i . '\',\'' . $prefix . $task . '\')" title="' . $action . '">'
    . JHtml::_('image', 'admin/' . $img, $alt, null, true) . '</a>';

            return $href;
        }
    }
    else {
        var_dump($value);
        die();
    }
}

Также я бы изменил имя переменной на $val при сравнении, чтобы ссылочная переменная никоим образом не изменялась функцией.

person rjt1224    schedule 15.01.2019