Symfony3中的__construct()和service.yml

时间:2017-04-16 14:50:20

标签: php forms symfony

我的代码存在一些问题,它有单独的表单,控制器和服务。这里的问题在哪里?

表单:https://pastebin.com/ERU6hChv 控制器:https://pastebin.com/FMzJ493v 服务:

# app/config/services.yml
services:
    app.form.type.przydzial:
        class: AppBundle\Form\PrzydzialType
        arguments: ['@session']
        tags:
            - { name: form.type }

不幸的是我有一个警告:

"Warning: Missing argument 1 for AppBundle\Form\PrzydzialType::__construct(), called in G:\Xampp\htdocs\projects\godziny_inz\vendor\symfony\symfony\src\Symfony\Component\Form\FormRegistry.php on line 85 and defined"

堆栈追踪:

"in src\AppBundle\Form\PrzydzialType.php at line 64"

return 'appbundle_przydzial';
}

public function __construct($session)
{
$this->session = $session; <----------64 line

编辑:

if i change this line: 
$form = $this->createForm('AppBundle\Form\PrzydzialType', $przydzial);
to 
$form = $this->createForm('app.form.type.przydzial', $przydzial);

我有不同的警告:

无法加载“app.form.type.przydzial”

类型

堆栈追踪:

在第87行的vendor \ symfony \ symfony \ src \ Symfony \ Component \ Form \ FormRegistry.php中

if (class_exists($name) && in_array('Symfony\Component\Form\FormTypeInterface', class_implements($name))) {
$type = new $name();
} else {
throw new InvalidArgumentException(sprintf('Could not load type "%s"', $name)); <---line 87
}
}

1 个答案:

答案 0 :(得分:0)

看起来您的表单类型是在FormRegistry中使用form.type创建的,而不是使用您的服务。您可以在enter image description here中找到发生这种情况的确切位置。由于您创建了一个服务并将其标记为AppBundle\Form\PrzydzialType,因此我只能假设问题出现在Symfony\Component\Form\AbstractType类中。

您很可能忘记延长return或意外延长错误(检查您的使用陈述)。