首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZfcUser -如何修改用户对象

ZfcUser -如何修改用户对象
EN

Stack Overflow用户
提问于 2013-07-04 17:02:55
回答 1查看 1.1K关注 0票数 1

我在我的模块(Module.php)中修改了ZfcUser注册表单,添加了两个新字段“名字”和“姓氏”,如下所示:

代码语言:javascript
复制
public function onBootstrap($e)
{
    $events           = $e->getApplication()->getEventManager()->getSharedManager();
    $zfcServiceEvents = $e->getApplication()->getServiceManager()->get('zfcuser_user_service')->getEventManager();

    $events->attach('ZfcUser\Form\Register', 'init', function($e) {
        $form = $e->getTarget();
        $form->add(array(
                'name' => 'firstname',
                'type' => 'Text',
                'options' => array(
                        'label' => 'First name: ',
                ),
        ));
        $form->add(array(
                'name' => 'lastname',
                'type' => 'Text',
                'options' => array(
                        'label' => 'Last name: ',
                ),
        ));
    });

    $events->attach('ZfcUser\Form\RegisterFilter', 'init', function($e) {
        $filter = $e->getTarget();
        $filter->add(array(
                'name'       => 'firstname',
                'required'   => true,
                'validators' => array(
                        array(
                                'name'    => 'StringLength',
                                'options' => array(
                                        'min' => 3,
                                        'max' => 255,
                                ),
                        ),
                ),
        ));
        $filter->add(array(
                'name'       => 'lastname',
                'required'   => true,
                'validators' => array(
                        array(
                                'name'    => 'StringLength',
                                'options' => array(
                                        'min' => 3,
                                        'max' => 255,
                                ),
                        ),
                ),
        ));
    });

    $zfcServiceEvents->attach('register', function($e) {
        $user = $e->getParam('user');  // User account object
        $form = $e->getParam('form');  // Form object
        //var_dump($form->get('firstname')->getValue()); die;
        //var_dump($user); die;
    });

    $zfcServiceEvents->attach('register.post', function($e) {
        $user = $e->getParam('user');
    });
}

注册表看起来没问题。我可以查看其他字段,并且验证工作正常。问题是我不能在user对象中设置这两个新字段:

代码语言:javascript
复制
$user->setFirstname($form->get('firstname')->getValue());

它是说这个属性不存在。你能解释一下我做错了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2013-07-04 17:52:34

好的就是解决它。在我的module.config.php中,我不得不添加以下内容:

代码语言:javascript
复制
'doctrine' => array(
            'driver' => array(
                    // overriding zfc-user-doctrine-orm's config
                    'zfcuser_entity' => array(
                            'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                            'paths' => __DIR__ . '/../src/User/Entity',
                    ),

                    'orm_default' => array(
                            'drivers' => array(
                                    'User\Entity' => 'zfcuser_entity',
                            ),
                    ),
            ),
    ),

    'zfcuser' => array(
            // telling ZfcUser to use our own class
            'user_entity_class'       => 'User\Entity\User',
            // telling ZfcUserDoctrineORM to skip the entities it defines
            'enable_default_entities' => false,
    ),

然后用我的扩展ZfcUser\Entity\User:

代码语言:javascript
复制
namespace User\Entity;
use ZfcUser\Entity\User as ZfcUser;
class User extends ZfcUser
{
    /**
     * @var string
     */
    protected $firstname;

    /**
     * @var string
     */
    protected $lastname;

    /**
     * Get firstname.
     *
     * @return string
     */
    public function getFirstname()
    {
        return $this->firstname;
    }

    /**
     * Set firstname.
     *
     * @param string $firstname
     * @return UserInterface
     */
    public function setFirstname($firstname)
    {
        $this->firstname = $firstname;
        return $this;
    }

    /**
     * Get lastname.
     *
     * @return string
     */
    public function getLastname()
    {
        return $this->lastname;
    }

    /**
     * Set lastname.
     *
     * @param string $lastname
     * @return UserInterface
     */
    public function setLastname($lastname)
    {
        $this->lastname = $lastname;
        return $this;
    }
}

在本教程http://circlical.com/blog/2013/4/1/l5wftnf3p7oks5561bohmb9vkpasp6中完成所有操作

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17466176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档