2016-05-25 5 views
1

私は、パスワード 'bcryptの' ソナタ管理INT FOS userbundleとパスワードを更新する必要があります。更新パスワードSonataAdminBundle

これは、私の管理者クラスです

<?php 

namespace AdminBundle\Admin; 

use Sonata\AdminBundle\Admin\Admin; 
use Sonata\AdminBundle\Datagrid\ListMapper; 
use Sonata\AdminBundle\Datagrid\DatagridMapper; 
use Sonata\AdminBundle\Form\FormMapper; 
use Sonata\AdminBundle\Show\ShowMapper; 

class UserAdmin extends Admin { 
    public function postPersist($object) { 
     $userManager = $this->get('fos_user.user_manager'); 
     $user = $userManager->findUserBy(array('id'=>$object->id)); 
     $user->setPlainPassword('test'); 
     $userManager->updateUser($user); 

    } 

これは私のユーザエンティティ、

<?php 

// src/AppBundle/Entity/User.php 

namespace AdminBundle\Entity; 

use FOS\UserBundle\Model\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="fos_user") 
*/ 
class User extends BaseUser { 

    /** 
    * @ORM\Id 
    * @ORM\Column(type="integer") 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="telephone", type="text", length=30, nullable=false) 
    */ 
    private $telephone; 

    /** 
    * Set nonotification 
    * 
    * @param text $telephone 
    * @return User 
    */ 
    public function settelephone($telephone) { 
     $this->telephone = $telephone; 

     return $this; 
    } 

    /** 
    * Get telephone 
    * 
    * @return text 
    */ 
    public function gettelephone() { 
     return $this->telephone; 
    } 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="text", length=60, nullable=false) 
    */ 
    private $name; 

    /** 
    * Set nonotification 
    * 
    * @param text $name 
    * @return User 
    */ 
    public function setname($name) { 
     $this->name = $name; 

     return $this; 
    } 

    /** 
    * Get name 
    * 
    * @return text 
    */ 
    public function getname() { 
     return $this->name; 
    } 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="surname", type="text", length=60, nullable=false) 
    */ 
    private $surname; 

    /** 
    * Set nonotification 
    * 
    * @param text $name 
    * @return User 
    */ 
    public function setsurname($surname) { 
     $this->surname = $surname; 

     return $this; 
    } 

    /** 
    * Get surname 
    * 
    * @return text 
    */ 
    public function getsurname() { 
     return $this->surname; 
    } 

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

} 

である。しかし、私が代わりにこのエラーを取得しています、

は未定義を呼び出そうとしましたクラス の「取得」「AdminBundle \管理者\ USERADMIN」という名前のメソッド。あなたは、例えばを呼び出すこともしかして "getActiveSubClass"、 "getActiveSubclassCode"、 "getBaseCodeRoute"、 "getBaseControllerName"、 "getBaseRouteName"、 "getBaseRoutePattern"、 "getBatchActions"、 "getBreadcrumbs"、 "でGetChild"、 "GetChildrenメソッド"、 "のgetClass"、「getClassnameLabel 」、 "にgetCode"、 "getConfigurationPool"、 "getCurrentChild"、 "getCurrentChildAdmin"、 "getDataSourceIterator"、 "getDatagrid"、 "getDatagridBuilder"、 "getExportFields"、 "getExportFormats"、 "getExtensions"、 "getFilterFieldDescription"、 "getFilterFieldDescriptions"、 "getFilterParameters"、 "getFilterTheme"、 "getForm"、 "getFormBuilder"、 "getFormContractor"、 "getFormFieldDescription"、 "getFormFieldDescriptions"、 "getFormGroups"、 "getFormTabs"、 "getFormTheme"、 "getIdParameter"、 "getLabel"、 "getLabelTranslatorStrategy"、 "GETLIST"、 "getListBuilder"、 "getListFieldDescription"、 "getListFieldDescriptions"、 "getManagerType"、 "getMaxPageLinks"、 "getMaxPerPage" 、 "getMenuFactory"、 "getModelManager"、 "getNewInstance"、 "getNormalizedIdentifier"、 "getObjectメソッド"、 "getObjectIdentifier"、 "getObjectMetadata"、 "のgetParent"、 "getParentAssociationMapping"、 "getParentFieldDescription"、 "getPerPageOptions"、 "getPermissionsParameter"、 "getPersistentParameters"、 "getRequest"、 "getRoot"、 "getRootCode"、 "getRouteBuilder"、 "getRouteGenerator"、 "getRouterIdParameter"、 "getRo UTES」、 "getSecurityHandler"、 "getSecurityInformation"、 "getShow"、 "getShowBuilder"、 "getShowFieldDescription"、 "getShowFieldDescriptions"、 "getShowGroups"、 "getShowTabs"、 "getSideMenu"、 "getSubClasses"、 "getSubject"、 "getTemplate"、 "getTemplates"、 "getTranslationDomain"、 "getTranslationLabel"、 "getTranslator"、 "getUniqid"、 "getUrlsafeIdentifier"または "getValidator"?

誰かがそれを調べるのに非常に役立つでしょう。

+1

を命名規則を尊重しています。パスワードを変更する必要があるときにパスワードを設定するだけで、多くの頭痛や問題を解決できます。このスライドショーを確認してください:http://ocramius.github.io/doctrine-best-practices/#/47 –

+0

ありがとうございました。 – vimuth

答えて

1

あなたはソナタの管理クラスから$this->get('service.name')でコンテナにアクセスすることはできません。

$container = $this->getConfigurationPool()->getContainer(); 
$userManager = $container->get('fos_user.user_manager'); 

また、私はあなたのソリューションがとにかく動作するかどうかわかりません。私はこのようなものを使用します:

public function postPersist($object) { 
    $container = $this->getConfigurationPool()->getContainer(); 
    $entityManager = $container->get('doctrine.orm.entity_manager'); 
    $object->setPlainPassword('test'); 
    $entityManager->persist($user); 
    $entityManager->flush(); 
} 

を、自分に好意を行うと、あなたがイベントでパスワードを更新するべきではありません(getName代わりのgetname、など)

関連する問題