php - 注意 $category->getProducts() : "Trying to get property of non-object"

标签 php prestashop prestashop-1.6

我试图获取 Prestashop 中某一类别的产品总数,我得到了正确的数字,但有此通知:

"Trying to get property of non-object in Category.php".

这是我的代码:

<?php
define('PRESTASHOP_S_EXTERNAL_SCRIPT', true);
include(dirname(__FILE__).'\..\prestashop_1.6.1.0\prestashop\config\config.inc.php');

//returns 1
echo Configuration::get('PS_LANG_DEFAULT');

$id_category = 123;

$category = new Category($id_category, (int)Configuration::get('PS_LANG_DEFAULT'),(int)Configuration::get('PS_SHOP_DEFAULT'));

//works
echo $category->getName();

//returns 1   
echo is_object($category);

//returns the correct number but with a PHP notice ("Trying to get property of non-object in Category.php on line 671")
echo $category->getProducts(1,1,1000,null,null,1,1);

最佳答案

抛出此通知是因为您的上下文中没有设置任何 Controller 。

如果您查看 Category.php 第 671 行:

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)
{
    // [...]
    $front = in_array($context->controller->controller_type, array('front', 'modulefront'));
    // [...]
}

问题来自这段代码$context->controller->controller_type。您的上下文中没有定义 Controller ,因为您没有从 Prestashop 中运行脚本。

您可以尝试手动向 Context 对象添加 Controller:

$context = Context::getContext();
$context->controller = new FrontController();
echo $category->getProducts(1,1,1000,null,null,1,1);

关于php - 注意 $category->getProducts() : "Trying to get property of non-object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35462362/

相关文章:

PHPExcel getFormatCode 问题

prestashop - 如何在注册表中添加字段?

javascript - 属性选择不适用于 Android 浏览器

php - 合并 dev 和 live prestashop 数据库

php - 403 Forbidden on nginx/1.4.6 (Ubuntu) - Laravel

php - 来自 swift 的 JSON 请求在 php 中显示空数组

javascript - 如何在使用 Ajax 时在 JavaScript 和 PHP 中为下拉菜单设置增量值

css - 在 prestashop 中拆分畅销书和新品

php - 将 Search.php 查询的值输出到 Prestashop 中的 product-list.tpl

php - MySQL 从两列表中选择