标签: fosuserbundle

如何为sonata-admin定义/传递实体管理器

我按照本教程安装了带有FOSUserBundle的SonataAdmin.

现在我不断收到此错误消息:没有为Application\Sonata\UserBundle\Entity\User类定义实体管理器

但是我如何设置/传递EntityManager?我没有找到任何关于配置它或任何关于此错误意味着什么的提示.有人帮忙吗?


编辑#1:

正如所要求的那样,到目前为止,这是我在config.yml中为sonata所拥有的内容:

sonata_block:
    default_contexts: [cms]
    blocks:
        sonata.admin.block.admin_list:
            contexts:   [admin]
        sonata.block.service.text:
        sonata.block.service.rss:
Run Code Online (Sandbox Code Playgroud)

编辑#2:

我为Doctrine2 ORM Admin添加了实体管理器配置部分,在文档中提到如果保留为null,则应该使用默认值.不过,它并没有解决我的问题.

sonata_doctrine_orm_admin:
    # default value is null, so doctrine uses the value defined in the configuration
    entity_manager: '@doctrine.orm.entity_manager'
Run Code Online (Sandbox Code Playgroud)

编辑#3: 我确实将auto_mapping设置为true,即使你默认也是如此.仍然没有解决这个问题.

symfony fosuserbundle symfony-sonata sonata-admin

2
推荐指数
1
解决办法
1万
查看次数

使用Bootstrap自定义寄存器FOSUserBundle

我在bootstrap文档中创建了一个Form builder.php来构建我的登录表单和我的注册表单,如下所示:http: //bootstrap.braincrafted.com/base-css#forms但接下来我发现了FOSUserBundle,我认为它可能是使用它是一个好主意.问题是:我不能简单地重用之前创建的表单.

我想使用bootstrap来自定义FOSUser模板.特别是对于提交按钮,我想添加所有这些:class ="btn primary large"

我创建了一个覆盖FOSUserBundle的UserBundle.

我在FOSUserBundle中自定义了login.html.twig,将login.html.twig放在UserBundle/Ressources/Views/Security/login.html.twig中

这很简单,因为登录模板只有一个文件.

但是我如何才能为注册部分做这件事呢?

有两个文件:register.html.twig和register_content.html.twig

所以我在UserBundle中创建了一个Registration文件夹,然后我输入了这两个文件.

但是,我用什么来改变提交按钮的样式?

在register.html.twig我让:

{% extends "UserBundle::layout.html.twig" %}

{% block fos_user_content %}
{% include "UserBundle:Registration:register_content.html.twig" %}
{% endblock fos_user_content %}
Run Code Online (Sandbox Code Playgroud)

在register_content.html.twig中:

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">
    {{ form_widget(form) }}
    <div>
        <input class="btn primary large" type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" />
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

您是否认为使用该捆绑包是一个很好的解决方案? https://github.com/CCETC/FOSUserBundle

它直接将所有表单与bootstrap样式集成在一起.

但是如果有一天我想在注册表格中添加一个字段(例如性别),我可以在这个包中做,就像使用原始的FOSUserBundle一样吗?

知道我想以寄存器形式添加一些自定义字段,并使用bootstrap自定义表单,我想知道使用FOSUserBundle是不是一个好主意,或者如果最好建立一个我自己的全新包来管理我的用户网站.

symfony twitter-bootstrap fosuserbundle

2
推荐指数
1
解决办法
6147
查看次数

即使登录到公共页面,也是匿名令牌

我在设置安全性时遇到了一些麻烦。

我希望匿名和登录成员都可以访问一个页面。我希望它根据情况显示不同的内容(实际上,我希望在继续时仍以会员身份登录)。

我想要公开访问的页面是 ^/profile。

我这样设置我的 security.yml :

jms_security_extra:
secure_all_services: false
expressions: true

security:
    encoders:
    Symfony\Component\Security\Core\User\User: plaintext
    FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

   # Firewall pour les pages de connexion, inscription, et récupération de mot de passe
        login:
           pattern: ^/(login$|register|resetting) # Les adresses de ces pages sont login, register et resetting
            anonymous: true                        # On autorise bien évidemment les anonymes sur ces pages # Firewall principal pour le …
Run Code Online (Sandbox Code Playgroud)

symfony fosuserbundle

2
推荐指数
1
解决办法
4145
查看次数

Symfony2 - $ this-> getUser()vs $ this-> get('fos_user.user_manager');

我正在使用FOSUserBundle.这两者有什么区别?

$this->get('fos_user.user_manager');
Run Code Online (Sandbox Code Playgroud)

...和...

$this->getUser();
Run Code Online (Sandbox Code Playgroud)

我发现我在不同的时间使用了上述两种方法,一切正常.

我猜第一个是来自FOS,第二个是默认的,但我猜我应该总是使用同一个.

这是我用过的一段代码:

$user = $this->getUser();
if($user) {             
    $email = $user->getEmail();
} else {
    $email = "no email";
}
Run Code Online (Sandbox Code Playgroud)

..另一个......

$userManager = $this->get('fos_user.user_manager');
$user = $userManager->findUserBy(array('memberID' => '123'));
Run Code Online (Sandbox Code Playgroud)

...所以我应该为两者使用相同的方法吗?

php symfony fosuserbundle

2
推荐指数
1
解决办法
1万
查看次数

Symfony2 添加当前用户以形成输入数据

我有一个标准 FOS 用户,该用户与博客实体具有多对一实体关系。

/**
 * @ORM\ManyToOne(targetEntity="User", inversedBy="blog")
 * @ORM\JoinColumn(name="user", referencedColumnName="id")
 */
private $user;
Run Code Online (Sandbox Code Playgroud)

我使用了app/consolegenerate:doctrine:crud命令来生成基本的 crud 系统。

当我创建新的博客实体时,我想插入执行该操作的登录用户。默认情况下,Symfony 生成 CRUD 代码,允许用户选择连接到实体的用户。

    $builder
        ->add('name')
        ->add('address')
        ->add('facebook')
        ->add('twitter')
        ->add('user')
    ;
Run Code Online (Sandbox Code Playgroud)

在控制器中,我可以使用 security.context 访问登录用户:

$user = $this->get('security.context')->getToken()->getUser();
Run Code Online (Sandbox Code Playgroud)

改变这种情况的最佳行动方案是什么?

symfony-forms symfony doctrine-orm fosuserbundle

2
推荐指数
1
解决办法
1455
查看次数

FOSUserBundle覆盖角色 - 已声明"Acme\DemoBundle\Entity\User"中的属性"角色",但必须仅声明一次

我喜欢大多数人试图覆盖FOSUserBundle角色,因此我可以将ManyToMany映射到角色实体.

不幸的是由于某些原因,由于模型/用户的映射,我得到以下内容:

Property "roles" in "Acme\DemoBundle\Entity\User" was already declared, but it must be declared only once
Run Code Online (Sandbox Code Playgroud)

在FOSUserBundle中发布的这个git问题中似乎提到了一些解决方法:

https://github.com/FriendsOfSymfony/FOSUserBundle/pull/1081#issuecomment-19027818

我是Doctrine ORM并使用Annotations映射而不是yml或xml.最新的Symfony(2.4)和最新的FOSUB.

我通过将所有内容复制到我的实体而不是扩展来尝试替代选项,但说实话,这搞砸了所有内容.

我试图创建我自己的模型/用户扩展FOSUserBundle/Model/User没有映射的想法.然后从中扩展我的实体/用户.我试过但我仍然遇到同样的问题.我假设我做错了.

有人可以建议/展示我将如何正确地做到这一点?

我真的需要能够覆盖角色,因为尽管FOSUserBundle很棒,角色的适应性也不是很好.虽然我当时很欣赏这是他们能够做到这一点的唯一方法,现在改变它现在打破BC.

希望有人能提供帮助.

亲切的问候Paul Pounder

php symfony doctrine-orm fosuserbundle symfony-2.4

2
推荐指数
1
解决办法
3966
查看次数

无法呈现表单,因为块名称数组包含重复项

我正在使用Symfony 3.3.9,当我尝试渲染表单时,我有以下错误:

在呈现模板期间抛出了异常("无法呈现表单,因为块名称数组包含重复项:"_ fos_user_registration_form_errors","user_errors","user_errors","fos_user_registration_errors","form_errors".").

在此输入图像描述

预先感谢您的帮助 !

编辑17/09/2017 你去:

public function indexAction()
{
    /** @var $formFactory FactoryInterface */
    $formFactory = $this->get('fos_user.registration.form.factory');

    $form = $formFactory->createForm();

    return $this->render('AppTMMainBundle:Default:index.html.twig', array(
        'form' => $form->createView(),
    ));
}
Run Code Online (Sandbox Code Playgroud)

我的树枝:

{{ form_start(form, {'method': 'post', 'action': path('fos_user_registration_register')}) }}
<div class="card-content">
    <h3 class="text-center title" style="color: #3C4858;margin:10px 0;">Inscription</h3>
    <div class="social text-center">
        <a class="btn btn-just-icon btn-round btn-facebook" href="{{ path('hwi_oauth_service_redirect',{'service': 'facebook'}) }}">
            <i class="fa fa-facebook"> </i>
        </a>
        <a class="btn btn-just-icon btn-round btn-twitter" href="{{ path('hwi_oauth_service_redirect',{'service': 'twitter'}) }}">
            <i class="fa fa-twitter"></i>
        </a>
        <a class="btn btn-just-icon …
Run Code Online (Sandbox Code Playgroud)

symfony-forms symfony twig fosuserbundle symfony-3.3

2
推荐指数
2
解决办法
1080
查看次数

Symfony3 在登录时立即丢失用户会话

我将我的 Symfony3 应用程序从共享主机移到了我刚刚设置的新 VPS。当我尝试登录应用程序(使用随意的 FOSUserBundle 表单)时,Symfony 确实登录我只是为了在下一页重新加载时断开我的连接。这是“立即”,因为成功登录所做的第一件事就是重定向到一个页面。

我试过的:

  • 我禁用了重定向,这使我可以在“login_check”页面上看到我已连接。我知道这一点,因为 Symfony 调试工具栏显示了我的名字。只有在重定向后不再。
  • 我可以随时随地看到我的 cookie 中没有 PHPSESSID。我认为它是负责保持我的 Symfony 会话活跃的 cookie。所以...
  • 我尝试了不同的 php 脚本来检查我的 VPS 配置。它确实可以很好地处理 cookie 和 PHP 会话。
  • 我什至在子文件夹中安装了 Wordpress,它可以完美地处理我的会话和 cookie。
  • Symfony 用于存储会话的服务器文件夹与 Wordpress 使用的相同。并且会话文件确实出现在 Symfony 登录尝试中。(虽然有时它们只是空文件......!?)
  • 将 FOSUB 和 Symfony 升级到最新版本。没有变化。

我正在使用 Symfony 3.4.6 和 FOSUB 2.0.0。任何的想法?

更新:Security.yml

# https://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
providers:
    fos_userbundle:
        id: fos_user.user_provider.username_email

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            check_path:     fos_user_security_check
            failure_path:   fos_user_security_login
            login_path: /fr/public/login
            default_target_path: app_homepage
        logout:
            path: fos_user_security_logout
            target: fos_user_security_login
        anonymous:    true


access_control:
    # Allow anonymous …
Run Code Online (Sandbox Code Playgroud)

php server-configuration symfony fosuserbundle symfony-3.4

2
推荐指数
1
解决办法
1562
查看次数

Symfony4 覆盖 FosUserBundle 模板

我正在关注这个:https : //symfony.com/doc/current/bundles/FOSUserBundle/overriding_templates.html

我在里面找到了默认模板 vendor/friendsofsymfony/user-bunfle/views/layout.html.twig

然后文档说将您的新布局模板放置在app/Resources/FOSUserBundle/views/layout.html.twig. 事情是,在 Symfony4 中,我认为没有更多的应用程序文件夹。那我该怎么做呢?谢谢

fosuserbundle symfony4

2
推荐指数
2
解决办法
1713
查看次数

FOSUserBundle:覆盖Twig模板:添加HTML元素

我正在使用FOSUserBundle,我想在注册表单中添加一些HTML元素.实际上,我做了,我可以在表单中看到User类的添加属性.问题是我想要那些字段(名字,姓氏,出生日期等)来获得我的CSS模板(bootstrap)的外观和感觉.我通过覆盖它成功地为登录页面执行了此操作,因为HTML是显式声明的.我想对注册页面做同样的事情,但它似乎对我很困惑,因为这里的内容是:

  • register.html.twig

    {%extends"FOSUserBundle :: layout.html.twig"%}

    {%block fos_user_content%} {%include"FOSUserBundle:Registration:register_content.html.twig"%} {%endblock fos_user_content%}

  • register_content.html.twig

    {%trans_default_domain'FOSUserBundle'%}

    {{form_widget(form)}}

如何从此代码访问我在页面中看到的元素?

symfony twig fosuserbundle

1
推荐指数
1
解决办法
1万
查看次数