3

我不知道如何定义这条线。如果有人可以提供将不胜感激的assiatnce,可能是非常简单的事情。

这一行: $value = $value->published;

一直给我这个错误 - 注意:未定义的属性: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;
}
4

2 回答 2

2

这些行没有多大意义:

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

您正在创建一个没有属性的干净对象,然后尝试从其中读取 - 因此出现错误。这些行是什么意思?

如果我不得不在黑暗中刺伤,请尝试移除$value = new stdClass();并查看现在是否有效。我想您希望published()函数的第一个参数接受布尔值或对象。

于 2013-09-15T15:48:48.977 回答
0

尝试使用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在比较时将变量名称更改为,以便函数不会以任何方式修改引用的变量。

于 2019-01-15T16:31:51.770 回答