2on*_*ne2 0 php forms symfony fosuserbundle
我得到这个警告,似乎无法找到解决方案,我尝试了各种答案,但仍然没有
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
Run Code Online (Sandbox Code Playgroud)
我的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 }
Run Code Online (Sandbox Code Playgroud)
这是我的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
Run Code Online (Sandbox Code Playgroud)
这是我的控制
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
));
}
Run Code Online (Sandbox Code Playgroud)
它的工作正常,但我不断得到这些错误,并不知道如何摆脱它们.
对于不熟悉依赖注入容器的人来说,这是一个非常常见的问题.您定义了服务,但随后使用新的RegistroType()来创建实例.我们的想法是,php会以某种方式意识到你想要一个服务并使用容器.不.'new'运算符对服务容器一无所知,只是尝试创建一个没有任何参数的新实例.因此错误消息.
您显然阅读了"定义表单类型即服务"部分(http://symfony.com/doc/current/book/forms.html#defining-your-forms-as-services),我可以看到您的困惑来自哪里从.手册可能会更清楚一些.
底线是你需要使用表单类型的别名而不是new运算符:
// Replace
$formulario = $this->createForm(\sava\UserBundle\Form\RegistroType(),$User);
// With
$formulario = $this->createForm('sava_user_registration',$User);
Run Code Online (Sandbox Code Playgroud)
第一次尝试时会出现不同的错误.你的服务定义中有一个拼写错误,但我会留给你调试.
| 归档时间: |
|
| 查看次数: |
3065 次 |
| 最近记录: |