1
cadch
Error: Call to undefined method stdClass::getVar() in file /class/tree.php line 66
  • 2023/11/8 15:42

  • cadch

  • Just popping in

  • Posts: 48

  • Since: 2007/12/17


My object
Array ( [0] => stdClass Object ( [cid] => [pid] => [name] => name [icon] => bi-folder-plus [weight] => 10 [update_date] => 1514736000 [cid_type] => _top [description] => description [picture] => 1.jpg [status_code] => [user_ip] => 127.0.0.1 [user_id] => ) )

my code
$tree = new XoopsObjectTree($object'cid''pid'null);

have Error: Call to undefined method stdClass::getVar() in file /class/tree.php line 66
How to fix it?

2
Mamba
Re: Error: Call to undefined method stdClass::getVar() in file /class/tree.php line 66
  • 2023/11/8 23:01

  • Mamba

  • Moderator

  • Posts: 11366

  • Since: 2004/4/23


The error you're encountering is due to the fact that the XoopsObjectTree class is expecting the objects in your tree structure to be XoopsObjects hat have a getVar() method, but in your case, you have an array of stdClass objects which do not have this method.

So you should use XoopsObject in your code.

The other way to fix this issue, you can create a custom class that extends the stdClass and implements the getVar() method to act as a bridge between your data and the XoopsObjectTree. Here's an example of how you can do this:

class CustomObject extends stdClass {
    public function 
getVar($var$format 's') {
        
// Implement the getVar method as needed for your data
        // You can fetch the value of the property based on the $var parameter
        // and apply any formatting if required.
        // For example:
        
switch ($var) {
            case 
'cid':
                return 
$this->cid;
            case 
'pid':
                return 
$this->pid;
            
// Add more cases as needed for other properties
            
default:
                return 
null// Return null for unknown properties
        
}
    }
}

// Create an array of CustomObject instances
$customObjects = array();

// Populate the $customObjects array with your data (stdClass objects)
// For example:
$stdObject = new stdClass();
$stdObject->cid 1;
$stdObject->pid 0;
// Add other properties as needed

$customObject = new CustomObject();
$customObject->cid $stdObject->cid;
$customObject->pid $stdObject->pid;
// Add other properties and implement getVar for CustomObject as needed

$customObjects[] = $customObject;

// Create the XoopsObjectTree using CustomObject instances
$tree = new XoopsObjectTree($customObjects'cid''pid'null);


If there are other missing elements, then you should add them to your CustomObject as well.

But if there are a lot of them, you would be better off by simply using XoopsObject.
Support XOOPS => DONATE
Use 2.5.10 | Docs | Modules | Bugs

3
cadch
Re: Error: Call to undefined method stdClass::getVar() in file /class/tree.php line 66
  • 2023/11/9 14:04

  • cadch

  • Just popping in

  • Posts: 48

  • Since: 2007/12/17


Thank Mamba.But I don't know how to use XoopsObject,Can you give me demo.
If My database TABLE name 'tree' content
cid  pid  name
1     0     aa
2     1     bb
3     2     cc

How to use XoopsObjectTree achieve this result
<select name="pid">
<
option value="0">----</option>
<
option value="1">aa</option>
<
option value="2">-bb</option>
<
option value="3">---cc</option>
</
select>

Sorry for wasting your time.

4
Mamba
Re: Error: Call to undefined method stdClass::getVar() in file /class/tree.php line 66
  • 2023/11/11 1:35

  • Mamba

  • Moderator

  • Posts: 11366

  • Since: 2004/4/23


If you have a table "tree" with your data, you can use XoopsObjectHandler::getObjects() with XoopsPersistableObjectHandler and XoopsObjectCriteria to fetch the data. Something like this:
// Assume you have TreeObj (XoopsObject) and TreeHandler (XoopsPersistableObjectHandler)
$treeHandler xoops_getModuleHandler('tree''your_module'); // Replace 'your_module' with your actual module name
$criteria = new CriteriaCompo();

// Fetch data from the 'tree' table
$treeObjects $treeHandler->getObjects($criteria);

// Create XoopsObjectTree
$tree = new XoopsObjectTree($treeObjects'cid''pid'null);

// Generate the HTML dropdown options
$options $tree->makeSelectElement('pid''name''--''-');

// Create the <select> element
$selectElement '<select name="pid">' $options '</select>';

echo 
$selectElement;
Support XOOPS => DONATE
Use 2.5.10 | Docs | Modules | Bugs

5
cadch
Re: Error: Call to undefined method stdClass::getVar() in file /class/tree.php line 66
  • 2023/11/11 10:56

  • cadch

  • Just popping in

  • Posts: 48

  • Since: 2007/12/17


I'm going to study now~
Thank you~

Login

Who's Online

155 user(s) are online (111 user(s) are browsing Support Forums)


Members: 0


Guests: 155


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Apr 30
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Latest GitHub Commits