首页 > 解决方案 > Symfony 4 在控制器中使用 Logger 和 Dump

问题描述

我是 Symfony 4 的新手,我正在使用分析器在开发环境中进行调试。

我正在尝试调试控制器中的功能/但我不能使用记录器或转储没有出现。

<?php

namespace App\Controller;

use Sonata\AdminBundle\Controller\CRUDController as Controller;
use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Psr\Log\LoggerInterface;

class CRUDController extends Controller
{
private $logger;

public function __construct(LoggerInterface $logger)
{
    $this->logger = $logger;
}

public function batchActionDownload(ProxyQueryInterface $selectedModelQuery)
{

    $this->logger->debug('exampleMethod :: $ourVar at interesting time', [
        'our_var' => $selectedModelQuery
    ]);

    var_dump($selectedModelQuery);
    dump($selectedModelQuery);

    return new RedirectResponse(
        $this->admin->generateUrl('list', $this->admin->getFilterParameters())
    );
}

我没有错误,但只是我的调试没有出现。

知道我在做什么坏事吗?

标签: symfonysymfony4

解决方案


通常定义路由的最佳方式是使用注解。你是新来的,我不知道你已经定义了你的路线。

但是,如果似乎没有调用您的函数。所以尝试设置一个路由并在你的浏览器中调用它。

/**
 * @Route("/mycrud", name="mycrud")
 */
public function batchActionDownload(ProxyQueryInterface $selectedModelQuery)

然后你应该可以在浏览器中打开你的函数http://yourdomain/mycrud。然后你应该看到调试栏和你的var_dump.

接下来是在函数中重定向。所以你输出一些东西并重定向。你看不到那个地方的输出。例如,您必须在输出之前停止代码exit


推荐阅读