2

FOSUserBundle のドキュメントに従ってフォームをオーバーライドすると、エラーが発生します。私が得ているエラーは次のとおりです。

サービス「scheduler_user.registration.form.type」に指定されたタイプ名が実際の名前と一致しません。「fos_user_registration」を指定すると、「scheduler_user_registration」が期待されます

関連ファイルは次のとおりです。

RegistrationFormType.php

<?php
// src/Scheduler/UserBundle/Form/Type/RegistrationFormType.php

namespace Scheduler\UserBundle\Form\Type;

use Symfony\Component\Form\FormBuilderInterface;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;

class RegistrationFormType extends BaseType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        parent::buildForm($builder, $options);

        // add your custom field
        $builder->add('firstname');
        $builder->add('lastname');
    }

    public function getFirstname()
    {
        return 'scheduler_user_registration';
    }

    public function getLastname()
    {
        return 'scheduler_user_registration';
    }
}

ユーザー.php

<?php
// src/Scheduler/UserBundle/Entity/User.php

namespace Scheduler\UserBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity
 * @ORM\Table(name="users")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(type="string", length=255)
     *
     * @Assert\NotBlank(message="Enter your first name.", groups={"Registration", "Profile"})
     */
    protected $firstname;

    /**
     * @ORM\Column(type="string", length=255)
     *
     * @Assert\NotBlank(message="Enter your last name.", groups={"Registration", "Profile"})
     */
    protected $lastname;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}

config.yml

# app/config/config.yml

# ...

# FOS User Bundle
fos_user:
    db_driver: orm
    firewall_name: main
    user_class: Scheduler\UserBundle\Entity\User
    registration:
      form:
        type: scheduler_user_registration

services.yml

# src/Scheduler/UserBundle/Resources/config/services.yml
services:
    scheduler_user.registration.form.type:
        class: Scheduler\UserBundle\Form\Type\RegistrationFormType
        arguments: [%fos_user.model.user.class%]
        tags:
            - { name: form.type, alias: scheduler_user_registration }
4

1 に答える 1

0

getFirstnameフォーム タイプにはandgetLastnameメソッドは必要ありません。

それらの 1 つを削除し、もう 1 つの名前を に変更しgetNameます。

そのメソッドは、フォーム フィールドのゲッターではありません。フォームの名前を指定するだけです。

于 2013-10-24T00:19:00.877 に答える