我正在与Sonata一起开发Symfony 2,8项目。我发现用户是用FOS管理的:
namespace Voyage'AdminBundle'Admin;
use Sonata'AdminBundle'Admin'Admin;
use Sonata'AdminBundle'Form'FormMapper;
use Sonata'AdminBundle'Datagrid'DatagridMapper;
use Sonata'AdminBundle'Datagrid'ListMapper;
use Sonata'AdminBundle'Show'ShowMapper;
use Sonata'UserBundle'Model'UserInterface;
use FOS'UserBundle'Model'UserManagerInterface;
class UserCoreAdmin extends Admin {
/**
* {@inheritdoc}
*/
public function getFormBuilder() {
//...
}
/**
* {@inheritdoc}
*/
public function getExportFields() {
// avoid security field to be exported
}
/**
* {@inheritdoc}
*/
protected function configureListFields(ListMapper $listMapper) {
//...
}
/**
* {@inheritdoc}
*/
protected function configureDatagridFilters(DatagridMapper $filterMapper) {
//...
}
/**
* {@inheritdoc}
*/
protected function configureShowFields(ShowMapper $showMapper) {
//...
}
/**
* {@inheritdoc}
*/
protected function configureFormFields(FormMapper $formMapper) {
//...
}
/**
* {@inheritdoc}
*/
public function preUpdate($user) {
$this->getUserManager()->updateCanonicalFields($user);
$this->getUserManager()->updatePassword($user);
}
/**
* @param UserManagerInterface $userManager
*/
public function setUserManager(UserManagerInterface $userManager) {
$this->userManager = $userManager;
}
/**
* @return UserManagerInterface
*/
public function getUserManager() {
return $this->userManager;
}
}
和我得到这个错误,而做一个用户更新:
注意:未定义属性:航行' AdminBundle ' Admin ' UserCoreAdmin:: $ userManager
500内部服务器错误- contextroreexception
您应该扩展Sonata'UserBundle'Admin'Entity'UserAdmin
,它应该具有此属性,而不是Sonata'AdminBundle'Admin'Admin
。
服务中缺少一个配置。yml中缺少对SetUserManager的调用。
- [ setUserManager, [ @fos_user.user_manager]]