在Symfony中的数组和对象问题

24 浏览
0 Comments

在Symfony中的数组和对象问题

我通过Symfony中的Action发送了一个对象,但在视图中无法检索到它。

这是Action的代码:

public function testphpAction()
    {
/*一些Doctrine代码*/
$productos = $consulta->getResult();
return $this->render('TPMainBundle:Default:test.html.php', array(
                'productos' => $productos,
    ));
}

我尝试了这个线程中的解决方案,但没有效果:PHP错误:无法将stdClass对象用作数组(数组和对象问题)

这是我的视图'test.html.php'的代码:

foreach($productos as $producto) {
    echo $producto['descripcion'];
}
//这显示了错误:"无法将TP\MainBundle\Entity\Works对象用作数组"

所以我尝试了另一个线程中的解决方案:

foreach ($productos as $producto) {
        $id         = $producto->id;
        echo $id;
//但它抛出了错误:"无法访问私有属性TP\MainBundle\Entity\Works::$id"

这也不起作用:

$id = $productos->id;
//抛出错误:"尝试获取非对象的属性"

我该如何访问它?如果我渲染到twig模板,我就没有这个问题,但我需要使用php。

$productos的var_dump如下所示:(我省略了这个链中的其他对象)

array(3) { [0]=> object(TP\MainBundle\Entity\Works)#290 (4) { ["id":"TP\MainBundle\Entity\Works":private]=> int(1) ["descripcion":"TP\MainBundle\Entity\Works":private]=> string(30) "Landing page for a toys store." ["img":"TP\MainBundle\Entity\Works":private]=> string(12) "images/1.jpg" ["preview":"TP\MainBundle\Entity\Works":private]=> string(13) "images/1m.jpg" }

0
0 Comments

Array and object issue in Symfony

在Symfony中遇到的数组和对象问题

问题原因:这段代码无法正常工作,原因是属性无法公开访问或对象没有该属性。在这个例子中,Work对象的description属性是私有的,因此需要创建一个getter函数来输出它。

解决方法:创建一个getter函数来获取description属性的值,并使用echo语句输出。

代码示例:

echo $producto->getDescription();

这样就可以正确地输出Work对象的description属性的值了。

0
0 Comments

在Symfony中出现了数组和对象问题。问题出现的原因是没有定义正确的getter方法。解决方法是在循环中使用正确的getter方法来获取数据,而不是直接访问对象属性。

例如,在下面的代码中:

foreach ($productos as $producto) {
    $id = $producto->id;
    echo $id;
}

尝试使用getter方法来获取id:

$producto->getId();

而不是直接访问对象属性:

$producto->id;

如果定义了正确的getter方法,上述修改应该能够解决问题。

另外,根据你的逻辑,你可以在循环中使用HTML标签<br>。

但是,如果Doctrine查询不同,修改可能不起作用。如果你更改查询以使用WHERE子句,例如:

(SELECT p FROM TPMainBundle:Works p WHERE p.id = :id)

可能会出现"Invalid argument supplied for foreach()"的错误。这是因为查询结果只返回一个单一的结果,而不是可迭代的列表。

如果你只有一个结果要显示,可以直接移除foreach循环。但是请注意,移除foreach循环后,如果视图仍然保留了"Invalid argument supplied for foreach()"的错误提示,可能是因为其他未解决的问题。

希望以上内容能帮助你解决问题,如果还有其他问题,请开启新的讨论。

0