Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 警告:FOS\UserBundle\Form缺少参数1_Php_Forms_Symfony_Fosuserbundle - Fatal编程技术网

Php 警告:FOS\UserBundle\Form缺少参数1

Php 警告:FOS\UserBundle\Form缺少参数1,php,forms,symfony,fosuserbundle,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 define

我收到这个警告,似乎找不到解决办法,我尝试了各种答案,但仍然一无所获

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
我的服务

# 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 
     ));
    }

它工作正常,但我不断地遇到这些错误,并且不知道如何消除它们。

对于刚刚接触依赖注入容器的人来说,这是一个非常常见的问题。您定义了服务,但随后使用new RegistroType()创建了实例。我们的想法是,php会以某种方式意识到您需要一个服务并使用容器。不。“new”操作符对服务容器一无所知,只是尝试创建一个没有任何参数的新实例。因此出现了错误消息

显然,您已经阅读了“将表单类型定义为服务”部分(),我可以看出您的困惑来自何处。手册可能会更清楚一点

底线是您需要使用表单类型的别名,而不是新的运算符:

// Replace
$formulario = $this->createForm(\sava\UserBundle\Form\RegistroType(),$User);

// With
$formulario = $this->createForm('sava_user_registration',$User);

第一次尝试此操作时,将出现不同的错误。您的服务定义中有一个输入错误,但我将把它留给您调试。

对于不熟悉依赖项注入容器的人来说,这是一个非常常见的问题。您定义了服务,但随后使用new RegistroType()创建了实例。我们的想法是,php会以某种方式意识到您需要一个服务并使用容器。不。“new”操作符对服务容器一无所知,只是尝试创建一个没有任何参数的新实例。因此出现了错误消息

显然,您已经阅读了“将表单类型定义为服务”部分(),我可以看出您的困惑来自何处。手册可能会更清楚一点

底线是您需要使用表单类型的别名,而不是新的运算符:

// Replace
$formulario = $this->createForm(\sava\UserBundle\Form\RegistroType(),$User);

// With
$formulario = $this->createForm('sava_user_registration',$User);
第一次尝试此操作时,将出现不同的错误。您的服务定义中有一个输入错误,但我将留给您调试