标签: symfony4

symfony 4 中的表单验证不起作用

我创建了一个实体Testme并使用它生成了 crud 文件bin/console make:crud并尝试向表单添加验证规则,但它不起作用:

我的实体:

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity(repositoryClass="App\Repository\TestmeRepository")
 */
class Testme
{
 /**
 * @ORM\Id()
 * @ORM\GeneratedValue()
 * @ORM\Column(type="integer")
 */
private $id;

/**
 * @Assert\NotBlank()
 * @ORM\Column(type="string", length=255)
 */
private $name;

/**
 * @ORM\Column(type="string", length=255, nullable=true)
 */
private $description;

....
Run Code Online (Sandbox Code Playgroud)

表格:

<?php

namespace App\Form;

use App\Entity\Testme;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class TestmeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder …
Run Code Online (Sandbox Code Playgroud)

symfony symfony4

-1
推荐指数
1
解决办法
3200
查看次数

symfony 4进程正在运行命令,但未运行

我有一个命令叫做:

broker:create-device
Run Code Online (Sandbox Code Playgroud)

它接受 2 个命令行参数。当我通过命令行运行时它起作用了。

现在,我想从控制器运行。所以我在另一篇 Stack Overflow 帖子中读到我可以这样做:

    $process = new Process(['php bin/console broker:create-device',1,2]);
    $process->run();
Run Code Online (Sandbox Code Playgroud)

并且确实执行了该命令,日志仅显示弃用错误:

[2019-02-07 17:04:13] php.INFO: User Deprecated: The "Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand" class is deprecated since Symfony 4.2, use "Symfony\Component\Console\Command\Command" with dependency injection instead. {"exception":"[object] (ErrorException(code: 0): User Deprecated: The \"Symfony\\Bundle\\FrameworkBundle\\Command\\ContainerAwareCommand\" class is deprecated since Symfony 4.2, use \"Symfony\\Component\\Console\\Command\\Command\" with dependency injection instead. at /Users/myuser/Code/site/vendor/symfony/framework-bundle/Command/ContainerAwareCommand.php:18)"} []
Run Code Online (Sandbox Code Playgroud)

但是,执行中的实际代码并未运行。有什么想法吗?

symfony4

-1
推荐指数
1
解决办法
1984
查看次数

如何使用 bootstrap 和 twig 自定义 symfony 表单错误?

对于我使用的 symfony 形式和树枝

{{ form_errors(form) }}
Run Code Online (Sandbox Code Playgroud)

使用bootstrap_4_horizontal_layout.html.twig,它工作正常,输出如下:

<span class="alert alert-danger d-block"><span class="d-block">
                    <span class="form-error-icon badge badge-danger text-uppercase">Error</span> <span class="form-error-message">Error</span>
                </span></span> 
Run Code Online (Sandbox Code Playgroud)

但我需要对其进行自定义以翻译消息旁边的引导错误标签。我可以在哪里定制它?

symfony twig bootstrap-4 symfony4

-1
推荐指数
1
解决办法
1393
查看次数

将服务注入服务

我试图在我创建的服务的构造函数中注入像entityManager这样的公共服务,但我一直有这个错误:

函数App\Services\BillingInterface :: __ construct()的参数太少,在第144行的/var/www/.../src/Controller/TestController.php中传递了0,正好是预期的1.

在我的控制器中,服务是以不同的方法正确注入的,但在我创建的服务中,它不是在构造函数中注入的.

我没有更改services.yaml中的任何内容,因为文档说autowire在Symfony 4.2中是自动的

PS:我最近从Symfony 4.1更新到4.2,我不确定,但我认为它之前有效.

也许图书馆没有正确更新,但我没有发现任何错误.

以下是该服务的信息

服务代码:

#/src/Services/BillingInterface

namespace App\Services;

use Doctrine\ORM\EntityManagerInterface;

class BillingInterface {

    private $em;

    public function __construct(EntityManagerInterface $entityManager)
    {
        $this->em = $entityManager;
    }

}
Run Code Online (Sandbox Code Playgroud)

控制器代码:

namespace App\Controller;

use App\Services\BillingInterface;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class TestController extends AbstractController {

    public function teest(EntityManagerInterface $entityManager)
    {
        $billing = new BillingInterface();
    }


}
Run Code Online (Sandbox Code Playgroud)

如果我使用$entityManagerController的参数实例化BillingInterface ,它可以工作,但我希望它直接在BillingInterface类构造函数中注入.

最后,这是Symfony文档中的内容:

// src/Service/MessageGenerator.php
// ...

use Psr\Log\LoggerInterface;

class MessageGenerator
{
    private $logger;

    public function __construct(LoggerInterface $logger) …
Run Code Online (Sandbox Code Playgroud)

php symfony symfony4

-2
推荐指数
1
解决办法
155
查看次数

Symfony 4:您请求的服务不存在

我将我的网站从Symfony 3.4更新到Symfony 4,并做了一些更改。但是知道我有这个错误:

您请求的服务“ D”不存在。

这是我的堆栈跟踪:

Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException:
You have requested a non-existent service "D".

  at vendor\symfony\dependency-injection\Container.php:263
  at Symfony\Component\DependencyInjection\Container->get('D')
     (vendor\symfony\routing\Loader\DependencyInjection\ServiceRouterLoader.php:38)
  at Symfony\Component\Routing\Loader\DependencyInjection\ServiceRouterLoader->getServiceObject('D')
     (vendor\symfony\routing\Loader\ObjectRouteLoader.php:55)
  at Symfony\Component\Routing\Loader\ObjectRouteLoader->load('D:\\IIS Websites\\Wizard\\src/config/routing.yml', 'service')
     (vendor\symfony\config\Loader\DelegatingLoader.php:40)
  at Symfony\Component\Config\Loader\DelegatingLoader->load('D:\\IIS Websites\\Wizard\\src/config/routing.yml', 'service')
     (vendor\symfony\framework-bundle\Routing\DelegatingLoader.php:70)
  at Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader->load('D:\\IIS Websites\\Wizard\\src/config/routing.yml', 'service')
     (vendor\symfony\framework-bundle\Routing\Router.php:56)
  at Symfony\Bundle\FrameworkBundle\Routing\Router->getRouteCollection()
     (vendor\symfony\routing\Router.php:367)
  at Symfony\Component\Routing\Router->getMatcherDumperInstance()
     (vendor\symfony\routing\Router.php:289)
  at Symfony\Component\Routing\Router->Symfony\Component\Routing\{closure}(object(ResourceCheckerConfigCache))
  at call_user_func(object(Closure), object(ResourceCheckerConfigCache))
     (vendor\symfony\config\ResourceCheckerConfigCacheFactory.php:43)
  at Symfony\Component\Config\ResourceCheckerConfigCacheFactory->cache('D:\\IIS Websites\\Wizard\\var\\cache\\dev/srcDevDebugProjectContainerUrlMatcher.php', object(Closure))
     (vendor\symfony\routing\Router.php:302)
  at Symfony\Component\Routing\Router->getMatcher()
     (vendor\symfony\routing\Router.php:256)
  at Symfony\Component\Routing\Router->matchRequest(object(Request))
     (vendor\symfony\http-kernel\EventListener\RouterListener.php:109)
  at Symfony\Component\HttpKernel\EventListener\RouterListener->onKernelRequest(object(GetResponseEvent), 'kernel.request', object(EventDispatcher))
     (vendor\symfony\event-dispatcher\EventDispatcher.php:212)
  at Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(array(array(object(DebugHandlersListener), 'configure'), array(object(ValidateRequestListener), 'onKernelRequest'), array(object(SessionListener), 'onKernelRequest'), array(object(FragmentListener), 'onKernelRequest'), array(object(RouterListener), 'onKernelRequest'), array(object(ResolveControllerNameSubscriber), 'onKernelRequest'), array(object(LocaleListener), 'onKernelRequest'), …
Run Code Online (Sandbox Code Playgroud)

php service dependency-injection symfony symfony4

-3
推荐指数
1
解决办法
2732
查看次数