>我的代码有一些问题,它有单独的形式、控制器和服务。问题出在哪里?
形式:https://pastebin.com/ERU6hChv 控制器:https://pastebin.com/FMzJ493v 服务:
# app/config/services.yml
services:
app.form.type.przydzial:
class: AppBundleFormPrzydzialType
arguments: ['@session']
tags:
- { name: form.type }
不幸的是,我有一个警告:
"Warning: Missing argument 1 for AppBundleFormPrzydzialType::__construct(), called in G:Xampphtdocsprojectsgodziny_inzvendorsymfonysymfonysrcSymfonyComponentFormFormRegistry.php on line 85 and defined"
堆栈跟踪:
"in srcAppBundleFormPrzydzialType.php at line 64"
return 'appbundle_przydzial';
}
public function __construct($session)
{
$this->session = $session; <----------64 line
编辑:
if i change this line:
$form = $this->createForm('AppBundleFormPrzydzialType', $przydzial);
to
$form = $this->createForm('app.form.type.przydzial', $przydzial);
我有不同的警告:
无法加载类型"app.form.type.przydzial">
堆栈跟踪:
in vendor\symfony\symfony\src\Symfony\Component\Form\FormRegistry.php 在第 87 行
if (class_exists($name) && in_array('SymfonyComponentFormFormTypeInterface', class_implements($name))) {
$type = new $name();
} else {
throw new InvalidArgumentException(sprintf('Could not load type "%s"', $name)); <---line 87
}
}
看起来您的表单类型是在 FormRegistry 中使用new
创建的,而不是使用您的服务。您可以在 FormRegistry 中找到发生这种情况的确切位置。由于您创建了一个服务并将其标记为form.type
因此我只能假设问题出在AppBundleFormPrzydzialType
类中的某个地方。
很可能您忘记扩展SymfonyComponentFormAbstractType
或意外地从错误的扩展(检查您的使用语句)。