我可以使用Sonata User Bundle将FOS捆绑包集成到sonata Admin捆绑包.我的登录工作正常.现在我想在FOSUserBundle中添加更改密码等功能到sonata Admin Bundle
我可以使用FOS用户包的配置文件功能
本地主机/ myproject的/ WEB/app_dev.php/profile文件
但改变密码同样如此
localhost/myproject/web/app_dev.php/change-password无法访问.
我想将它与SonataAdminBundle集成为
本地主机/ myproject的/ WEB/app_dev.php /管理/更改密码
你能告诉我我应该在哪里改变或者我哪里出错了?
在我的路由中我有
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /register
fos_user_resetting:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /resetting
fos_user_change_password:
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
prefix: /change-password
Run Code Online (Sandbox Code Playgroud) 我在我的Symfony2项目中使用FosUserBundle和SonataUserBundle.
我现在感到困惑.我想为实体用户添加字段,但它不起作用.例如,架构没有更新.
这是我的配置:
AppKernel:
...
new FOS\UserBundle\FOSUserBundle(),
new Sonata\UserBundle\SonataUserBundle(),
new Application\Sonata\UserBundle\ApplicationSonataUserBundle('FOSUserBundle')
config.yml:
...
# FOSUserBundle Configuration
fos_user:
db_driver: orm # BDD type
firewall_name: main # firewall name
user_class: Application\Sonata\UserBundle\Entity\User # entity class defined
Run Code Online (Sandbox Code Playgroud)
在app/Application/Sonata/userBundle/Entity /中添加了字段的User实体
namespace Application\Sonata\UserBundle\Entity;
use Sonata\UserBundle\Entity\BaseUser as BaseUser;
/**
* This file has been generated by the Sonata EasyExtends bundle ( http://sonata- project.org/easy-extends )
*
* References :
* working with object : http://www.doctrine-project.org/projects/orm/2.0 /docs/reference/working-with-objects/en
*
* @author <yourname> <youremail>
*/
class User extends BaseUser
{
/** …Run Code Online (Sandbox Code Playgroud) 有人知道如何定制/更改FosFacebook登录按钮的图像?
{{ facebook_login_button({'autologoutlink': true}) }}
Run Code Online (Sandbox Code Playgroud)
并重定向整页Facebook登录不弹出窗口.
我在我的Symfony 2应用程序中使用FOSUserBundle,并想知道如何在PHPStorm中进行代码完成工作,因为当您通过容器注入服务时:
$userManager = $this->container->get('fos_user.user_manager');
Run Code Online (Sandbox Code Playgroud)
并尝试使用$ userManager来查看其界面 - 我什么也看不见,因为对于PHPStorm,这是一个常规变量,而不是通过"new"运算符构建的对象.
有没有办法让它向我展示这个对象的可用方法?
就像我们通常使用真实对象一样:

谢谢!
在Symfony 2(最新版本)下,我正在尝试更新我的实体:
php app/console doctrine:schema:upate --force
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息到我的终端:
[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]
"security.firewalls.access_control"下无法识别的选项"0,1,2,3"
我是Symfony的新手,我不知道在哪里可以搜索来解决这个问题.
这是security.yml文件:
# To get started with security, check out the documentation:
Run Code Online (Sandbox Code Playgroud)
安全性:编码器:FOS\UserBundle\Model\UserInterface:bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: security.csrf.token_manager # Use form.csrf_provider instead for Symfony <2.4
logout: true
anonymous: true
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
#main:
#anonymous: ~
# activate different ways …Run Code Online (Sandbox Code Playgroud) 我正在使用带有FOSUserBundle的symfony 2,问题是当添加用户时,登录的当前用户配置文件将被当前添加的用户替换,然后当我尝试编辑其他用户配置文件时,唯一可编辑的将是当前登录的用户,FOSUserBundle的继承功能有问题吗?我希望在添加用户时,当前登录的用户不会随着添加的内容而改变,而且当我编辑另一个用户配置文件时,我正在编辑的用户帐户将被编辑,而不是当前添加的用户帐号.
以下是来自FOSUserBundle的代码:
注册控制器://添加用户
public function registerAction(Request $request)
{
/** @var $formFactory \FOS\UserBundle\Form\Factory\FactoryInterface */
$formFactory = $this->get('fos_user.registration.form.factory');
/** @var $userManager \FOS\UserBundle\Model\UserManagerInterface */
$userManager = $this->get('fos_user.user_manager');
/** @var $dispatcher \Symfony\Component\EventDispatcher\EventDispatcherInterface */
$dispatcher = $this->get('event_dispatcher');
$user = $userManager->createUser();
$user->setEnabled(true);
$event = new GetResponseUserEvent($user, $request);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event);
if (null !== $event->getResponse()) {
return $event->getResponse();
}
$form = $formFactory->createForm();
$form->setData($user);
$form->handleRequest($request);
if ($form->isValid()) {
$event = new FormEvent($form, $request);
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);
$userManager->updateUser($user);
if (null === $response = $event->getResponse()) {
$session = $this->getRequest()->getSession();
$session->getFlashBag()->add('message', 'Sucessfully …Run Code Online (Sandbox Code Playgroud) 在我的symfony项目中,使用FOS包,我有4个这样的角色:
ROLE_USER_ONE
ROLE_USER_TWO
ROLE_USER_THREE
他们无法访问相同的视图,除了一个.这是我的渲染视图的控制器:
/**
* @Security("has_role('ROLE_USER_ONE', 'ROLE_USER_TWO', 'ROLE_USER_THREE')")
* @Route("/add-note", name="add_user_note")
* @Method({"GET"})
*/
public function addNoteToUserAction()
{
$securityContext = $this->container->get('security.authorization_checker');
if ($securityContext->isGranted('ROLE_USER_ONE', 'ROLE_USER_TWO', 'ROLE_USER_THREE')) {
/* ... some persist datas and process here ... */
return $this->render('MyBundle:NoteUser:addNote.html.twig', array(
));
} else {
throw new \Exception('You have no right to access this page');
}
}
Run Code Online (Sandbox Code Playgroud)
为了测试视图渲染,我创建了一个角色为ROLE_USER_TWO的用户.当我渲染视图时,我有这个错误:
表达式"has_role('ROLE_USER_ONE','ROLE_USER_TWO','ROLE_USER_THREE')"拒绝访问.
据我所知,Symfony期望用户拥有所有角色,如何在我的控制器注释和控制器代码中允许对用户进行视图访问?
我怎么知道我的人物的角色.
$personal = $em->getRepository('AuthenticationBundle:User')->FindPersonel($id);
dump($personal->getRoles());
die();
Run Code Online (Sandbox Code Playgroud)
没有空白页面.
我正在尝试从FOSUserBundle(Symfony3.4)实现UserManager.
服务/ Register.php
<?php
namespace AppBundle\Service;
use FOS\UserBundle\Model\UserManager;
class Register
{
private $userManager;
public function __construct(UserManager $userManager)
{
$this->userManager = $userManager;
}
public function register() {
$user = $this->userManager->findUserByUsernameOrEmail('aaa@gmail.clom');
if($user){
return false;
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试调用此方法时,我得到:
无法自动装配服务"AppBundle\Service\Register":方法"__construct()"的参数"$ userManager"引用类"FOS\UserBundle\Model\UserManager"但不存在此类服务.您应该将此类别名为现有的"fos_user.user_manager.default"服务.
我现在应该怎么做?
我有一个普通的User类,当我使用MySQL时,只有id属性才能正常工作.自从我改为Postgresql后,我开始遇到很多问题.
让我首先概述一下我的应用程序,它是一个网络上的GIS,我放了一个TSV文件和我制作的php脚本,它读取TSV文件并将其数据保存在数据库中.然后Geoserver读取数据并将其提供给我的传单地图.所以Postgresql非常重要,因为Geoserver不支持MySQL.
起初我使用命令行工具创建了数据库及其模式.一切都很好,直到这里,但当我尝试使用命令行来创建用户时,它会抛出SQLSTATE [42601]语法错误:
In AbstractPostgreSQLDriver.php line 70:
An exception occurred while executing 'INSERT INTO user (username, username_canonical, emai
l, email_canonical, enabled, salt, password, last_login, confirmation_token, password_reque
sted_at, roles, id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params ["admin", "adm
in", "admin@ferrybox.tk", "admin@ferrybox.tk", 1, null, "$2y$13$rS4j9aDRRpKMA2ge3QoDNuhmCWD
9cO9Cmnzv\/PxqUmBxSximXcFZu", null, null, null, "a:0:{}", 1]:
SQLSTATE[42601]: Syntax error: 7 ERREUR: erreur de syntaxe sur ou près de « user »
LINE 1: INSERT INTO user (username, …Run Code Online (Sandbox Code Playgroud) fosuserbundle ×10
symfony ×10
php ×3
autosuggest ×1
doctrine-orm ×1
facebook ×1
phpstorm ×1
postgresql ×1
roles ×1
security ×1
sonata-admin ×1
symfony-2.1 ×1