web-dev-qa-db-fra.com

Symfony 4 fosuserbundle

Je commence par Symfony 4 et je souhaite installer FosUserBundle avec ce lien: https://symfony.com/doc/master/bundles /FOSUserBundle/index.html

D'abord:

Mon problème est que je ne sais pas où trouver le fichier "app/config/config.yml" pour décommenter le traducteur et configurer:

fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: main
user_class: AppBundle\Entity\User
from_email:
    address: "%mailer_user%"
    sender_name: "%mailer_user%"

Seconde:

Je pense que je dois créer le fichier security.yml dans le répertoire "config/packages /", c'est bien ça?

Troisième:

Et dans quel fichier ajouter l'itinéraire?

Pourrais-tu m'aider s'il te plait ? :)

15
cretthie

J'ai résolu le problème suivi ceci:

  1. téléchargez FOSUserBundle en utilisant composer:

    composer a besoin de friendsofsymfony/user-bundle "~ 2.0"

A la fin de l'installation, vous aurez le message d'erreur suivant:

Le noeud enfant "db_driver" du chemin "fos_user" doit être configuré.

  1. Créez votre classe d'utilisateurs Créez src/Entity/User.php en tant que classe d'utilisateurs personnalisée qui étendent la classe FOSUserBundle BaseUser.
 <?php
//src/Entity/User.php

namespace App\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;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}
  1. Configurez le fichier security.yml de votre application. Modifiez config/packages/security.yaml pour configurer la sécurité FOSUserBundle.
    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#where-do-users-come-from-user-providers
    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager

            logout:       true
            anonymous:    true

    # Easy way to control access for large sections of your site
    # Note: Only the *first* access control that matches will be used
    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }
  1. Configurer FOSUserBundle Créez un nouveau fichier config/packages/fos_user.yaml pour la configuration de FOSUserBundle
fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: main
user_class: App\Entity\User
from_email:
    address: "[email protected]"
    sender_name: "[email protected]"

Mettez à jour config/packages/framework.yaml pour ajouter une configuration de modèle

framework:
    templating:
        engines: ['twig', 'php']
  1. Importer le routage FOSUserBundle Créer config/routes/fos_user.yaml
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
  1. Mettre à jour votre schéma de base de données Si ce n'est déjà fait, vous devez créer votre base de données.

php bin/console doctrine: base de données: créer

Mettre à jour le schéma avec les informations de votre entité de classe User

doctrine php bin/console: schema: update --force

À ce stade, tout est installé et configuré pour utiliser FOSUserBundle dans Symfony 4. Exécutez la commande suivante pour vérifier si tout va bien

mise à jour du compositeur

Si vous n'avez pas de message d'erreur, vous pouvez tester! Vous pouvez exécuter le serveur Web pour tester votre application

serveur php bin/console: start

tous les tutoriels ici : https://vfac.fr/blog/how-install-fosuserbundle-with-symfony-4

17
elftine

C'est la solution que j'ai trouvée pour fonctionner.

Première:

app/config/config.yml n'existe plus à la place, les configurations ont été déplacées dans le dossier config. Pour le groupe d'utilisateurs FOS au bon emplacement: /config/packages/fos_user.yaml. Comme déjà noté, utilisez la version dev-master FOSUserBundle, elle supporte 4 (encore un peu de travail en cours mais assez bon).

Seconde:

Vous avez raison, une solution simple consiste à faire un composer require security et la recette s’occupe de cela pour vous. https://symfony.com/doc/current/security.html pour plus d'informations.

Troisième:

Les itinéraires par défaut du groupe d'utilisateurs FOS: fos_user: resource: "@FOSUserBundle/Resources/config/routing/all.xml"

Plus d'informations sur le routage FOS (étape 6) sont utiles https://symfony.com/doc/master/bundles/FOSUserBundle/index.html

De plus, je vous recommande de consulter les exemples de yaml dans la documentation de routage de symfony. Cela peut rendre les choses un peu plus claires lors de la configuration des itinéraires par rapport au groupe d'utilisateurs FOS. https://symfony.com/doc/current/routing.html

14
Sean Bahrami

ok j'ai le même problème et ça devrait être comme ça d'abord: comme @sean Baharmi dit que tu devrais créer /config/packages/fos_user.yaml et une configuration inter comme celle-ci

fos_user:
  db_driver: orm
  firewall_name: main
  user_class: App\Entity\Users
  from_email:
      address: "[email protected]"
      sender_name: "Sender Name"

puis dans framework.yaml, vous devez entrer ce qui suit à cause de FOSUserBundle dépendances

templating:
  engines: ['twig', 'php']

aussi pour ajouter le routage dans /config/rourtes/routes.yaml add

fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"

alors il est prêt à travailler

l'espoir fonctionne pour vous

6
ghazaleh javaheri

Vous ne pouvez pas utiliser FOSUSerBundle sur Symfony4 pour le moment. Le support n'a pas encore été fusionné. Vous pouvez suivre le développement ici .

2
dlondero

Si vous voulez utiliser FOSUserBundle avec Symfony4, vous pouvez essayer le correctif fourni par Ryan ici .

0
kunicmarko20