web-dev-qa-db-ja.com

Symfony 4 fosuserbundle

私はSymfony 4で始まり、このリンクでFosUserBundleをインストールしたいです: https://symfony.com/doc/master/bundles /FOSUserBundle/index.html

最初の:

私の問題は、「app/config/config.yml」ファイルがどこにあるのかわからないため、翻訳者のコメントを外して設定する必要があることです。

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%"

2番目:

「config/packages /」ディレクトリにsecurity.ymlファイルを作成する必要があると思います、そうですか?

第三:

そして、どのファイルにルートを追加しますか?

私を手伝ってくれますか ? :)

15
cretthie

私はこれに従って問題を解決しました:

  1. composerを使用してFOSUserBundleをダウンロードします。

    composerにはfriendsofsymfony/user-bundle "〜2.0"が必要です

インストールの最後に、次のエラーメッセージが表示されます。

パス「fos_user」の子ノード「db_driver」を構成する必要があります。

  1. ユーザークラスを作成するFOSUserBundle BaseUserクラスを拡張するカスタムユーザークラスとしてsrc/Entity/User.phpを作成します。
 <?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. アプリケーションのsecurity.ymlを設定しますconfig/packages/security.yamlを変更して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. FOSUserBundleの構成FOSUserBundleの構成用に新しいファイルconfig/packages/fos_user.yamlを作成します
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]"

Config/packages/framework.yamlを更新してテンプレート構成を追加します

framework:
    templating:
        engines: ['twig', 'php']
  1. FOSUserBundleルーティングのインポートconfig/routes/fos_user.yamlを作成します
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
  1. データベーススキーマを更新するまだ行っていない場合は、データベースを作成する必要があります

php bin/console doctrine:database:create

Userクラスエンティティからの情報でスキーマを更新します

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

この時点で、すべてがインストールされ、Symfony 4でFOSUserBundleを使用するように設定されます。次のコマンドを実行して、すべてが正常かどうかを確認します

作曲家の更新

エラーメッセージがない場合は、テストできます! Webサーバーを実行して、アプリケーションをテストできます。

php bin/console server:start

すべてのチュートリアル ここhttps://vfac.fr/blog/how-install-fosuserbundle-with-symfony-4

17
elftine

これが私が見つけた解決策です。

最初:

app/config/config.ymlは存在しなくなり、代わりに設定が設定フォルダに移動さ​​れました。 FOSユーザーバンドルの場合、正しい場所:/config/packages/fos_user.yaml。既に述べたように、dev-masterバージョンのFOSUserBundleを使用して、4をサポートします(まだ少し作業中ですが、十分です)。

第二:

あなたは正しい、簡単な解決策はcomposer require securityそして、レシピがあなたの面倒を見てくれます。 https://symfony.com/doc/current/security.html 詳細については.

三番:

デフォルトのFOSユーザーバンドルルート:fos_user: resource: "@FOSUserBundle/Resources/config/routing/all.xml"

FOSルーティングの詳細(手順6)が役立ちます https://symfony.com/doc/master/bundles/FOSUserBundle/index.html

また、symfonyのルーティングドキュメントでyamlサンプルを確認することをお勧めします。 FOS User Bundleに関連するルートを設定するとき、物事がもう少し明確になるかもしれません。 https://symfony.com/doc/current/routing.html

14
Sean Bahrami

oK

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

その後、framework.yamlでは、FOSUserBundle依存関係のため、次を入力する必要があります

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

/config/rourtes/routes.yaml addでルーティングを追加する場合も

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

その後、動作する準備が整いました

希望はあなたのために働く

6

現在、Symfony4ではFOSUSerBundleを使用できません。サポートはまだ統合されていません。開発をフォローできます こちら

2
dlondero

Symfony4でFOSUserBundleを使用する場合は、Ryanが提供するパッチ here を試すことができます。

0
kunicmarko20