1

私は2.2 プロジェクトでFOSUserBundleandPropelを使用しています。クラスを拡張して、新しいメソッドを次のように追加Symfonyしようとしています。User

namespace Acme\UserBundle\Model;

use FOS\UserBundle\Propel\User as BaseUser;

class User extends BaseUser
{
    protected $id;

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

    public function hasPermission($topic) {
        // TODO check if $topic has permission
        return TRUE;
    }
}

問題は、コントローラーを呼び出すときに$this->getUser()返されるオブジェクトのクラスが であるFOS\UserBundle\Propel\Userため、hasPermission()未定義であることです。

カスタムクラスのコンストラクターで例外を投げてみたところ、新規ユーザー登録時に使用されているようでした。しかし、私はそれがとして保存されていないと思いAcme\UserBundle\Model\Userます。

別のプロジェクトでこれを試しDoctrineたところ、呼び出し時に正しいクラスが返されました$this->getUser()。私は何か間違ったことをしていますか?Propel で動作させるにはどうすればよいですか?

config.yml:

fos_user:
    db_driver: propel
    firewall_name: main
    user_class: Acme\UserBundle\Model\User

security.yml:

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }
4

1 に答える 1

0

GlorpenPropelBundleをインストールし、 config.ymlに数行追加しました。

config.yml

propel:
    classname: Glorpen\Propel\PropelBundle\Connection\EventPropelPDO
    build_properties:
        propel.behavior.event.class:    'vendor.glorpen.propel-bundle.Glorpen.Propel.PropelBundle.Behaviors.EventBehavior'
        propel.behavior.extend.class:   'vendor.glorpen.propel-bundle.Glorpen.Propel.PropelBundle.Behaviors.ExtendBehavior'
        propel.behavior.default:        "event, extend"

glorpen_propel:
    extended_models:
        FOS\UserBundle\Propel\User: Acme\UserBundle\Model\User

$this->getUser()今戻りますAcme\UserBundle\Model\User

于 2013-05-20T12:54:56.890 に答える