Stéphane1405 Posted February 10, 2016 Share Posted February 10, 2016 (edited) Hello everyone, Here is my code : define('PRESTASHOP_S_EXTERNAL_SCRIPT', true); include(dirname(__FILE__).'\..\prestashop_1.6.1.0\prestashop\config\config.inc.php'); echo Configuration::get('PS_LANG_DEFAULT'); $id_category = 123; $category = new Category($id_category, Configuration::get('PS_LANG_DEFAULT')); //product count echo $category->getProducts(1,1,1000,null,null,1,1); I get the default language id , the number of products of category 123 but in between I get a notice "trying to get property of non objet" even though PHP is_object($category) returns TRUE. Here is the screen I get : 1( ! ) Notice: Trying to get property of non-object in prestashop_1.6.1.0\prestashop\classes\Category.php on line 671Call Stack# Time Memory Function Location1 0.0006 247584 {main}( ) ..\mon_script.php:02 0.0849 12151800 CategoryCore->getProducts( ) ..\mon_script.php:258 I have got not clue, so your help will be greatly appreciated. Thanks for reading, Stéphane Edited February 10, 2016 by Stéphane1405 (see edit history) Link to comment Share on other sites More sharing options...
yaniv14 Posted February 10, 2016 Share Posted February 10, 2016 I will first try to isolate it to determine if its caused by: $category = new Category($id_category, Configuration::get('PS_LANG_DEFAULT')); or by: echo $category->getProducts(1,1,1000,null,null,1,1); So comment one of them and run the script again. I would change the 1st one to: $category = new Category($id_category, (int)Configuration::get('PS_LANG_DEFAULT')); and the 2nd one to: echo $category->getProducts(1,1,1000); Look at the getProducts function: public function getProducts($id_lang, $p, $n, $order_by = null, $order_way = null, $get_total = false, $active = true, $random = false, $random_number_products = 1, $check_access = true, Context $context = null) What is the purpose of '1,1' after the null? if you are not changing default values don't call it. Link to comment Share on other sites More sharing options...
Stéphane1405 Posted February 15, 2016 Author Share Posted February 15, 2016 (edited) Thanks a lot for your precise answer.I tried what you suggested and I still get the notice. I also have a problem with the getName() property that returns just 1 letter : define('PRESTASHOP_S_EXTERNAL_SCRIPT', true); include(dirname(__FILE__).'\..\prestashop_1.6.1.0\prestashop\config\config.inc.php'); echo Configuration::get('PS_LANG_DEFAULT'); echo "<br/>"; $id_category = 123; $category = new Category($id_category, (int)Configuration::get('PS_LANG_DEFAULT'),(int)Configuration::get('PS_SHOP_DEFAULT')); //that works echo $category->name; echo "<br/>"; //returns one letter echo $category->getName(1); echo "<br/>"; //returns number of products but with PHP notice echo $category->getProducts(1,1,1000,null,null,1,1); echo "<br/>"; returns 1 category name a ( ! ) Notice: Trying to get property of non-object in prestashop_1.6.1.0\prestashop\classes\Category.php on line 671 Call Stack # Time Memory Function Location 1 0.0006 248448 {main}( ) ..\presta_desactive_cat_vides.php:0 2 0.0962 12152432 CategoryCore->getProducts( ) ..\presta_desactive_cat_vides.php:34 8 Any suggestion would be greatly appreciated. Edited February 15, 2016 by Stéphane1405 (see edit history) Link to comment Share on other sites More sharing options...
yaniv14 Posted February 15, 2016 Share Posted February 15, 2016 try to echo $category->getName(); also try: var_dump($category); p.s. is the name of category 116 'o' :-) Link to comment Share on other sites More sharing options...
Stéphane1405 Posted February 15, 2016 Author Share Posted February 15, 2016 Thanks yaniv for your time. Unfortunately the name of the category is not 'o' :-( I haved added getName() and var_dump ($category) here is my code and HTML output. PHP code <?php define('PRESTASHOP_S_EXTERNAL_SCRIPT', true); include(dirname(__FILE__).'\..\prestashop_1.6.1.0\prestashop\config\config.inc.php'); echo Configuration::get('PS_LANG_DEFAULT'); echo "<br/>"; $id_category = 117; $category = new Category($id_category, (int)Configuration::get('PS_LANG_DEFAULT'),(int)Configuration::get('PS_SHOP_DEFAULT')); //works echo $category->name; echo "<br/>"; //returns just one letter echo $category->getName(1); echo "<br/>"; //returns the correct number bu with PHP notice echo $category->getProducts(1,1,1000,null,null,1,1); echo " products<br/>"; var_dump($category); HTML output 1 right category name a ( ! ) Notice: Trying to get property of non-object in C:\wamp\www\NBS\preprod\prestashop_1.6.1.0\prestashop\classes\Category.php on line 671 Call Stack #TimeMemoryFunctionLocation 10.0007250160{main}( )..\presta_desactive_cat_vides.php:0 20.096612154384CategoryCore->getProducts( )..\presta_desactive_cat_vides.php:36 8 products object(Category)[20] public 'id' => int 117 public 'id_category' => string '117' (length=3) public 'name' => string 'Haut Médoc' (length=11) public 'active' => string '1' (length=1) public 'position' => string '25' (length=2) public 'description' => string '' (length=0) public 'id_parent' => string '36' (length=2) public 'id_category_default' => null public 'level_depth' => string '4' (length=1) public 'nleft' => string '55' (length=2) public 'nright' => string '56' (length=2) public 'link_rewrite' => string 'haut-medoc' (length=10) public 'meta_title' => string '' (length=0) public 'meta_keywords' => string '' (length=0) public 'meta_description' => string '' (length=0) public 'date_add' => string '2016-01-06 20:29'... (length=19) public 'date_upd' => string '2016-01-06 20:29'... (length=19) public 'is_root_category' => string '0' (length=1) public 'id_shop_default' => string '1' (length=1) public 'groupBox' => null public 'id_image' => boolean false protected 'webserviceParameters' => array (size=4) 'objectsNodeName' => string 'categories' (length=10) 'hidden_fields' => array (size=3) 0 => string 'nleft' (length=5) 1 => string 'nright' (length=6) 2 => string 'groupBox' (length=8) 'fields' => array (size=3) 'id_parent' => array (size=1) 'xlink_resource' => string 'categories' (length=10) 'level_depth' => array (size=1) 'setter' => boolean false 'nb_products_recursive' => array (size=2) 'getter' => string 'getWsNbProductsR'... (length=24) 'setter' => boolean false 'associations' => array (size=2) 'categories' => array (size=2) 'getter' => string 'getChildrenWs' (length=13) 'resource' => string 'category' (length=8) 'products' => array (size=2) 'getter' => string 'getProductsWs' (length=13) 'resource' => string 'product' (length=7) protected 'id_lang' => int 1 protected 'id_shop' => int 1 public 'id_shop_list' => null protected 'get_shop_from_context' => boolean false protected 'table' => string 'category' (length=8) protected 'identifier' => string 'id_category' (length=11) protected 'fieldsRequired' => array (size=1) 0 => string 'active' (length=6) protected 'fieldsSize' => array (size=0) empty protected 'fieldsValidate' => array (size=9) 'nleft' => string 'isUnsignedInt' (length=13) 'nright' => string 'isUnsignedInt' (length=13) 'level_depth' => string 'isUnsignedInt' (length=13) 'active' => string 'isBool' (length=6) 'id_parent' => string 'isUnsignedInt' (length=13) 'id_shop_default' => string 'isUnsignedId' (length=12) 'is_root_category' => string 'isBool' (length=6) 'date_add' => string 'isDate' (length=6) 'date_upd' => string 'isDate' (length=6) protected 'fieldsRequiredLang' => array (size=2) 0 => string 'name' (length=4) 1 => string 'link_rewrite' (length=12) protected 'fieldsSizeLang' => array (size=5) 'name' => int 128 'link_rewrite' => int 128 'meta_title' => int 128 'meta_description' => int 255 'meta_keywords' => int 255 protected 'fieldsValidateLang' => array (size=6) 'name' => string 'isCatalogName' (length=13) 'link_rewrite' => string 'isLinkRewrite' (length=13) 'description' => string 'isCleanHtml' (length=11) 'meta_title' => string 'isGenericName' (length=13) 'meta_description' => string 'isGenericName' (length=13) 'meta_keywords' => string 'isGenericName' (length=13) protected 'tables' => array (size=0) empty protected 'image_dir' => string 'C:\wamp\www\NBS\'... (length=60) protected 'image_format' => string 'jpg' (length=3) protected 'def' => array (size=7) 'table' => string 'category' (length=8) 'primary' => string 'id_category' (length=11) 'multilang' => boolean true 'multilang_shop' => boolean true 'fields' => array (size=16) 'nleft' => array (size=2) 'type' => int 1 'validate' => string 'isUnsignedInt' (length=13) 'nright' => array (size=2) 'type' => int 1 'validate' => string 'isUnsignedInt' (length=13) 'level_depth' => array (size=2) 'type' => int 1 'validate' => string 'isUnsignedInt' (length=13) 'active' => array (size=3) 'type' => int 2 'validate' => string 'isBool' (length=6) 'required' => boolean true 'id_parent' => array (size=2) 'type' => int 1 'validate' => string 'isUnsignedInt' (length=13) 'id_shop_default' => array (size=2) 'type' => int 1 'validate' => string 'isUnsignedId' (length=12) 'is_root_category' => array (size=2) 'type' => int 2 'validate' => string 'isBool' (length=6) 'position' => array (size=1) 'type' => int 1 'date_add' => array (size=2) 'type' => int 5 'validate' => string 'isDate' (length=6) 'date_upd' => array (size=2) 'type' => int 5 'validate' => string 'isDate' (length=6) 'name' => array (size=5) 'type' => int 3 'lang' => boolean true 'validate' => string 'isCatalogName' (length=13) 'required' => boolean true 'size' => int 128 'link_rewrite' => array (size=5) 'type' => int 3 'lang' => boolean true 'validate' => string 'isLinkRewrite' (length=13) 'required' => boolean true 'size' => int 128 'description' => array (size=3) 'type' => int 6 'lang' => boolean true 'validate' => string 'isCleanHtml' (length=11) 'meta_title' => array (size=4) 'type' => int 3 'lang' => boolean true 'validate' => string 'isGenericName' (length=13) 'size' => int 128 'meta_description' => array (size=4) 'type' => int 3 'lang' => boolean true 'validate' => string 'isGenericName' (length=13) 'size' => int 255 'meta_keywords' => array (size=4) 'type' => int 3 'lang' => boolean true 'validate' => string 'isGenericName' (length=13) 'size' => int 255 'classname' => string 'Category' (length=8) 'associations' => array (size=1) 'l' => array (size=3) 'type' => int 2 'field' => string 'id_category' (length=11) 'foreign_field' => string 'id_category' (length=11) protected 'update_fields' => null public 'force_id' => boolean false I hope somebody will have an idea. Link to comment Share on other sites More sharing options...
yaniv14 Posted February 15, 2016 Share Posted February 15, 2016 1st of all it seems that the error is related to echo $category->getProducts(1,1,1000,null,null,1,1); 2nd can you try call the getName like I mentioned above: echo $category->getName(); Link to comment Share on other sites More sharing options...
Stéphane1405 Posted February 15, 2016 Author Share Posted February 15, 2016 thanks yaniv,echo $category->getName(1) gives the same result as echo $category->getName();it returns one letter. Link to comment Share on other sites More sharing options...
yaniv14 Posted February 15, 2016 Share Posted February 15, 2016 Can you paste here the getName function from Category.php in classes folder. Link to comment Share on other sites More sharing options...
Stéphane1405 Posted February 15, 2016 Author Share Posted February 15, 2016 (edited) thanks yaniv, from Category.php : public function getName($id_lang = null) { if (!$id_lang) { if (isset($this->name[Context::getContext()->language->id])) $id_lang = Context::getContext()->language->id; else $id_lang = (int)Configuration::get('PS_LANG_DEFAULT'); } return isset($this->name[$id_lang]) ? $this->name[$id_lang] : ''; } Edited February 15, 2016 by Stéphane1405 (see edit history) Link to comment Share on other sites More sharing options...
yaniv14 Posted February 15, 2016 Share Posted February 15, 2016 I think I understand where is the problem. You are trying to instance category with: $category = new Category($id_category, (int)Configuration::get('PS_LANG_DEFAULT'),(int)Configuration::get('PS_SHOP_DEFAULT')); and I think you need to instance it only by ID, there is no need for lang and shop because this is only for the object. can you try: $category = new Category($id_category); Link to comment Share on other sites More sharing options...
Stéphane1405 Posted February 15, 2016 Author Share Posted February 15, 2016 again, thanks for you time yaniv.using $category = new Category($id_category) I still get the notice plus a new one "Array to string conversion" with echo $category->name that did not return error before. Link to comment Share on other sites More sharing options...
shon Posted May 7, 2019 Share Posted May 7, 2019 I have the same problem when I try to retrieve the contact email in the .tpl prestashop\admin\themes\default\template\controllers\customer_threads\helpers\view\view.tpl the .php file should be prestashop\controllers\admin\AdminCustomerThreadsController.php {if $contact->email == '[email protected]' } ...... ... ... {else} {/if} from debugging this error comes out and therefore "if" has no effect [8] Trying to get property 'email' of non-object Can someone kindly help me? Thanks to those who will respond. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now