我得到这个警告,似乎无法找到解决方案,我已经尝试了各种答案,但仍然没有
Warning: Missing argument 1 for FOS\UserBundle\Form\Type\RegistrationFormType::__construct(), called in C:\xampp\htdocs\symfony-bootstrap\src\sava\UserBundle\Controller\VerUsuarioController.php on line 77 and defined in C:\xampp\htdocs\symfony-bootstrap\vendor\friendsofsymfony\user-bundle\FOS\UserBundle\Form\Type\RegistrationFormType.php on line 25
Notice: Undefined variable: class in C:\xampp\htdocs\symfony-bootstrap\vendor\friendsofsymfony\user-bundle\FOS\UserBundle\Form\Type\RegistrationFormType.php on line 27
我的services.yml
# src/Acme/UserBundle/Resources/config/services.yml
services:
sava_user.registration.form.type:
class: sava\UserBundle\Form\RegistroTypes
arguments: [%fos_user.model.user.class%]
tags:
- { name: form.type, alias: sava_user_registration }
这是我的config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: "@savaUserBundle/Resources/config/services.yml" }
framework:
#esi: ~
translator: { fallback: %locale% }
secret: %secret%
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection: ~
validation: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_proxies: ~
session: ~
fragments: ~
http_method_override: true
# Twig Configuration
twig:
debug: %kernel.debug%
strict_variables: %kernel.debug%
form:
resources:
- 'MopaBootstrapBundle:Form:fields.html.twig'
# Assetic Configuration
assetic:
debug: %kernel.debug%
use_controller: false
filters:
less:
node: /Arturo/bin/node
node_paths: [/Arturo/lib/node_modules]
# lessphp:
# node: ["C:\\Program Files\\nodejs\\node.exe"]
# node_paths: ["C:\\Users\\Arturo\\AppData\\Roaming\\npm\\node_modules"]
apply_to: "\.less$"
cssrewrite: ~
cssembed:
jar: %kernel.root_dir%/Resources/java/cssembed-0.3.6.jar
apply_to: "\.css$|\.less$"
yui_css:
jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.6.jar
apply_to: "\.css$"
yui_js:
jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.6.jar
# Doctrine Configuration
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
# if using pdo_sqlite as your database driver, add the path in parameters.yml
# e.g. database_path: %kernel.root_dir%/data/data.db3
# path: %database_path%
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
# Swiftmailer Configuration
swiftmailer:
transport: %mailer_transport%
host: %mailer_host%
username: %mailer_user%
password: %mailer_password%
spool: { type: memory }
fos_user:
db_driver: orm
firewall_name: main
user_class: sava\UserBundle\Entity\User
registration:
form:
type: sava_user_registration
这是我的控制分数
public function modificarUserAction(Request $request,$id) {
$em = $this->getDoctrine()->getManager();
$User = $em->getRepository('savaUserBundle:User')->find($id);
$formulario = $this->createForm(new \sava\UserBundle\Form\RegistroType(),$User);
$formulario->handleRequest($request);
if ($request->getMethod() == 'POST') {
$em = $this->getDoctrine()->getManager();
$em->persist($User);
$em->flush();
return $this->forward('savaUserBundle:VerUsuario:vertodos');
}
else
{
return $this->render('savaUserBundle:Default:modificarUser.html.twig', array(
'formulario' => $formulario->createView(),'User'=> $User
));
}
它的工作正常,但我不断得到这些错误,并且不知道如何摆脱它们。
答案 0 :(得分:5)
对于不熟悉依赖注入容器的人来说,这是一个非常常见的问题。您定义了服务,但随后使用新的RegistroType()来创建实例。我们的想法是,php会以某种方式意识到你想要一个服务并使用容器。不。新的' operator对服务容器一无所知,只是尝试创建一个没有任何参数的新实例。因此错误信息。
您显然已将#34;定义表单类型定义为服务"部分(http://symfony.com/doc/current/book/forms.html#defining-your-forms-as-services),我可以看到你的困惑来自哪里。手册可能会更清晰一些。
底线是您需要使用表单类型的别名而不是新运算符:
// Replace
$formulario = $this->createForm(\sava\UserBundle\Form\RegistroType(),$User);
// With
$formulario = $this->createForm('sava_user_registration',$User);
第一次尝试时会出现不同的错误。你的服务定义中有一个拼写错误,但我会留给你调试。