【问题标题】:How to print all results in for-loop?如何在for循环中打印所有结果?
【发布时间】:2019-10-04 14:25:21
【问题描述】:

在我的代码中,我尝试打印“montag”是“geschlossen”的所有结果。它可以工作,但我必须在var_dump() 中打印它,否则会出错。

我的问题是,如何循环返回结果?我想用 Doctrine、Symfony 和 twig 制作这个(PDO 示例):

foreach ($pdo->query($sql) as $row) {
   echo $row['value1']."<br />";
   echo $row['value2']."<br />";
}
<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use App\Entity\Offnungszeiten;
use Doctrine\ORM\EntityManagerInterface;

class OffnungsController extends AbstractController
{
    /**
     * @Route("/")
     */
    public function index(EntityManagerInterface $em)
    {
        $repository = $em->getRepository(Offnungszeiten::class);
        /** @var Offnungszeiten $open */
        $open = $repository->findOneBy(['id' => 3]);
        if (!$open) {
            throw $this->createNotFoundException(sprintf('Not Found Exception - SQL findOneBy() is undefined'));
        }


        $repository = $this->getDoctrine()->getRepository(Offnungszeiten::class);

        $products = $repository->findBy(
            ['montag' => 'Geschlossen'],
            ['id' => 'ASC']
        );

        $products = $repository->findAll();

    $result = var_dump($products);



        $response = $this->forward('App\Controller\IndexController::index', [
            'open' => $open,
            'productsrt' => $result
        ]);
        return $response;
    }
}

在树枝中,我尝试像这样打印它:

    {% for productsrt in productsrt %}
        {{ productsrt }}
    {% endfor %}

IndexController.php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class IndexController extends AbstractController
{
    public function index($open, $productsrt)
    {
        return $this->render('index/index.html.twig', [
            'controller_name' => 'IndexController',
            'pagetype' => 'index',
            'pageurl' => "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]",
            'open' => $open,
            'productsrt' => $productsrt
        ]);
    }

打印出来:

array(2) { [0]=&gt; object(App\Entity\Offnungszeiten)#490 (8) { ["id":"App\Entity\Offnungszeiten":private]=&gt; int(3) ["montag":"App\Entity\Offnungszeiten":private]=&gt; string(11) "Geschlossen" ["dienstag":"App\Entity\Offnungszeiten":private]=&gt; string(22) " 09.00 Uhr - 18.00 Uhr" ["mittwoch":"App\Entity\Offnungszeiten":private]=&gt; string(22) " 09.00 Uhr - 18.00 Uhr" ["donnerstag":"App\Entity\Offnungszeiten":private]=&gt; string(22) " 09.00 Uhr - 20.00 Uhr" ["freitag":"App\Entity\Offnungszeiten":private]=&gt; string(22) " 09.00 Uhr - 18.00 Uhr" ["samstag":"App\Entity\Offnungszeiten":private]=&gt; string(21) "09.00 Uhr - 13.00 Uhr" ["sonntag":"App\Entity\Offnungszeiten":private]=&gt; string(11) "Geschlossen" } [1]=&gt; object(App\Entity\Offnungszeiten)#493 ...等等。

但我无法将其“重新格式化”为普通数组或循环

我收到了错误

An exception has been thrown during the rendering of a template ("Catchable Fatal Error: Object of class App\Entity\Offnungszeiten could not be converted to string").

如果我在没有var_dump()的情况下尝试过

我希望问题是可以理解的,并且您可以帮助我!谢谢!

【问题讨论】:

    标签: php symfony doctrine twig symfony4


    【解决方案1】:

    您的错误表明该对象无法转换为字符串。也许你应该使用to string casting

         /**
         * To string casting
         *
         * @return string
         */
        public function __toString(): string
        {
            return (string)$this->name;
        }
    

    将其添加到您的实体中。 或者使用

        {% for productsrt in productsrt %}
            {{ productsrt.name }}
        {% endfor %}
    

    在你的控制器中你应该发送 $products,你不需要使用 var_dump()

    $products = $repository->findAll();
    
            $response = $this->forward('App\Controller\IndexController::index', [
                'open' => $open,
                'productsrt' => $products
            ]);
            return $response;
    

    【讨论】:

    • 第二种解决方案对我不起作用。它打印 var_dump()。
    • @RobertNewtus 在控制器中你不应该使用 var_dump(),我将它添加到我的答案中
    【解决方案2】:

    尝试在symfony中使用dump方法

    dump(var)

    它正确地呈现有关对象/变量的信息。

    更多信息https://symfony.com/doc/current/components/var_dumper.html

    【讨论】:

      猜你喜欢
      • 2022-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      相关资源
      最近更新 更多