标签: fosuserbundle

如何使用Symfony中的FosUserBundle将用户管理器作为服务访问?

所以通常我可以通过执行以下操作来访问控制器中的用户管理器:

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

但是我需要在服务中访问它.所以这就是我做的:

在我的config.yml文件中:

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: Main\UserBundle\Entity\User



services:
    userbundle_service:
        class:        Main\UserBundle\Controller\UserBundleService
        arguments: [@fos_user]
Run Code Online (Sandbox Code Playgroud)

在我的UserBundleService.php中:"

<?php
namespace Main\UserBundle\Controller;

use FOS\UserBundle\Entity\User;
use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Bridge\Monolog\Logger;



class UserBundleService
{

     protected $securityContext;

    public function __construct(User $user)
    {
        $this->user = $user;
    }


    public function validateRequest(){    
   $userManager = $this->container->get('fos_user.user_manager');
  $this ->logger->warn("user is : ".$userManager);
  exit;

    }

}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

ServiceNotFoundException: The service "userbundle_service" has a dependency on a non-existent service "fos_user".
Run Code Online (Sandbox Code Playgroud)

所以我接下来要做的是将fos_user作为服务移到config.yml中:

services:
    userbundle_service:
        class:        Main\UserBundle\Controller\UserBundleService
        arguments: [@fos_user2]

    fos_user2:
        user_class: Main\UserBundle\Entity\User
Run Code Online (Sandbox Code Playgroud)

我收到错误:

RuntimeException: …
Run Code Online (Sandbox Code Playgroud)

php symfony fosuserbundle

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

Symfony 2无法覆盖模板FOSUserBundle

我在我的项目中实现了FOSUser.我成功地重载了表单.

只有当我想覆盖模板时,它才起作用.但我尊重FOSUser建筑的观点.

你知道什么是问题吗?

overriding symfony twig fosuserbundle

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

在FOSUserBundle上记录注册时间和登录时间

FOSUserbundle

我想在用户注册时记录User表上的createdAt,UpdateAt,loginAt等数据.

我在想的是我应该把它放在哪里.

我可以找到类似的参考

https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_controllers.md

它说重写/src/Acme/UserBundle/Controller/RegistrationController.php

class RegistrationController extends BaseController
{
    public function registerAction()
    {
        $form = $this->container->get('fos_user.registration.form');
        $formHandler = $this->container->get('fos_user.registration.form.handler');
        $confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');

        $process = $formHandler->process($confirmationEnabled);
        if ($process) {
            $user = $form->getData();

            /*****************************************************
             * Add new functionality (e.g. log the registration) *
             *****************************************************/
            $this->container->get('logger')->info(
                sprintf('New user registration: %s', $user)
            );

            if ($confirmationEnabled) {
                $this->container->get('session')->set('fos_user_send_confirmation_email/email', $user->getEmail());
                $route = 'fos_user_registration_check_email';
            } else {
                $this->authenticateUser($user);
                $route = 'fos_user_registration_confirmed';
            }

            $this->setFlash('fos_user_success', 'registration.flash.user_created');
            $url = $this->container->get('router')->generate($route);

            return new RedirectResponse($url);
        }

        return $this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html.'.$this->getEngine(), array(
            'form' …
Run Code Online (Sandbox Code Playgroud)

symfony fosuserbundle

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

如何覆盖FOSUserBundle/Doctrine/UserManager.php

我正在将fileupload系统与fosuserbundle集成

我需要覆盖updateUser函数

/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Doctrine/UserManager.php
Run Code Online (Sandbox Code Playgroud)

我把这个文件复制到了

/ACME/UserBundle/Doctrine/UserManager.php
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

这是我的临时/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Doctrine/UserManager.php

public function updateUser(UserInterface $user, $andFlush = true)
{
    $this->updateCanonicalFields($user);
    $this->updatePassword($user);

   //it works but it  should not be used here.
    $user->upload();
    //

    $this->objectManager->persist($user);
    if ($andFlush) {
        $this->objectManager->flush();
    }
}     
Run Code Online (Sandbox Code Playgroud)

symfony fosuserbundle

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

Symfony2,FOSUser,重置密码后不登录用户

我正在使用FosUser重置密码系统,我不知道如何在用户更改密码后删除自动登录?

感谢您的帮助,我不想覆盖,我直接更改FOS文件.

symfony fosuserbundle

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

FOS UserBundle - >无法创建新用户

这是我第一次独自使用Symfony2,我认为在配置FOS用户包时我犯了一个错误.看起来我的用户实体没有正确扩展FOS\UserBundle\Entity\User.

这是我的User类(与doc中提到的基本相同)

<?php
// src/Acme/UserBundle/Entity/User.php

namespace VillaPrivee\UserBundle\Entity;

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


/**
 * @ORM\Entity
 * @ORM\Table(name="user")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}
Run Code Online (Sandbox Code Playgroud)

由于我使用Netbeans,我可以"按住Ctrl键"并确保"FOS\UserBundle\Entity\User"存在.到目前为止,我没有看到任何错误......

但是当我尝试使用终端创建新用户时,我收到此错误:

Fatal error: Call to undefined method VillaPrivee\UserBundle\Entity\User::setUsername() 
in /Applications/MAMP/htdocs/VillaPrivee/vendor/friendsofsymfony/
user-bundle/FOS/UserBundle/Util/UserManipulator.php on line 50
Run Code Online (Sandbox Code Playgroud)

不知道我应该为你们提供哪些其他细节,请告诉我,在这种情况下是否有任何其他文件可能很重要.

谢谢你的帮助!

编辑:

<?php

namespace VillaPrivee\UserBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class VillaPriveeUserBundle extends Bundle
{
    public function getParent()
    {
        return …
Run Code Online (Sandbox Code Playgroud)

extend symfony fosuserbundle

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

如何更改Symfony2 FOSUser寄存器窗体错误消息?

我已经定制了我的register_content.html.twig

            <form class="form-horizontal" action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST">
                <div id="fos_user_registration_form">
                <div class="form-group">
                    <div class="col-sm-10">
                        {{ form_widget(form.username, { 'attr': {'class': 'form-control', 'placeholder': 'Pick a username' } }) }}
                        {{ form_errors(form.username) }}
                    </div>
                </div> ...
Run Code Online (Sandbox Code Playgroud)

而现在,当我收到错误时,那些错误就像那样

fos_user.username.already_used
fos_user.email.already_used
fos_user.password.mismatch
Run Code Online (Sandbox Code Playgroud)

我只是想改变这些消息,任何人都可以帮助我吗?

forms validation symfony fosuserbundle

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

FOSUserBundle覆盖注册但无法加载类型错误

我尝试使用FOSUserBundle,我按照文档中的说明覆盖了Bundle,但是当我尝试访问/ register时/ login工作(我没有覆盖它)时出现此错误:

Could not load type "app_user_registration"
500 Internal Server Error - InvalidArgumentException 
Run Code Online (Sandbox Code Playgroud)

配置

Symfony版本:3.1.7

FOSUserBundle版本:dev-master

我的文件

应用程序/配置/ services.yml:

services:
    app.form.registration:
        class: CoreBundle\Form\Type\RegistrationFormType
        tags:
            - { name: form.type, alias: app_user_registration }
Run Code Online (Sandbox Code Playgroud)

应用程序/配置/ config.yml:

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: CoreBundle\Entity\User
    registration:
        form:
            type: app_user_registration
Run Code Online (Sandbox Code Playgroud)

SRC/CoreBundle /表/类型/ RegistrationFormType.php

<?php
// src/CoreBundle/Form/Type/RegistrationFormType.php

namespace CoreBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

class RegistrationFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name');
    }

    public function getParent()
    {
        return 'fos_user_registration';
    } …
Run Code Online (Sandbox Code Playgroud)

php symfony fosuserbundle

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

将FOSUserBundle与Symfony 3.3一起使用时出现YAML错误

在Symfony中设置FOSUserBundle时,我遇到了一个奇怪的错误.我收到此错误消息:

A colon cannot be used in an unquoted mapping value at line 30 (near " csrf_token_generator: security.csrf.token_manager").
Run Code Online (Sandbox Code Playgroud)

这是我的security.yml,谁能告诉我我做错了什么?

# To get started with security, check out the documentation:
# https://symfony.com/doc/current/security.html
security:
    encoders:
        FOS\UserBundle\Model\UserInterface: bcrypt

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN
# https://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
providers:
#        in_memory:
#            memory: ~
    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    main:
        pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager

            logout:       true
            anonymous:    true
    # disables authentication for assets and the profiler, adapt it according to your needs
    dev:
        pattern: …
Run Code Online (Sandbox Code Playgroud)

yaml symfony fosuserbundle

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

FOS用户捆绑确认链接强制您登录

我被要求在CRM中添加确认电子邮件,然后用户将注册,然后发送一封电子邮件,其中包含确认的链接以启用其帐户.但是,无论何时单击链接,它都会立即重定向到登录页面,因为它们尚未确认,因此无用.我试图在security.yml文件中排除它,但到目前为止没有运气.

我试过了:

- { path: ^/register/*, role: IS_AUTHENTICATED_ANONYMOUSLY }

- { path: ^/confirm/, role: IS_AUTHENTICATED_ANONYMOUSLY }

- { path: ^/register/confirm/*, role: IS_AUTHENTICATED_ANONYMOUSLY }
Run Code Online (Sandbox Code Playgroud)

但这些似乎都不起作用.

根据要求,FOS注册的路由文件:

<?xml version="1.0" encoding="UTF-8" ?>

<routes xmlns="http://symfony.com/schema/routing"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">

    <route id="fos_user_registration_register" path="/" methods="GET POST">
        <default key="_controller">FOSUserBundle:Registration:register</default>
    </route>

    <route id="fos_user_registration_check_email" path="/check-email" methods="GET">
        <default key="_controller">FOSUserBundle:Registration:checkEmail</default>
    </route>

    <route id="fos_user_registration_confirm" path="/confirm/{token}" methods="GET">
        <default key="_controller">FOSUserBundle:Registration:confirm</default>
    </route>

    <route id="fos_user_registration_confirmed" path="/confirmed" methods="GET">
        <default key="_controller">FOSUserBundle:Registration:confirmed</default>
    </route>

</routes>
Run Code Online (Sandbox Code Playgroud)

FOS用户配置:

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: AppBundle\Entity\User
    registration:
        confirmation:
            enabled: true
            template:   emails/registration.html.twig …
Run Code Online (Sandbox Code Playgroud)

symfony fosuserbundle

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

标签 统计

fosuserbundle ×10

symfony ×10

php ×2

extend ×1

forms ×1

overriding ×1

twig ×1

validation ×1

yaml ×1