Symfony 4 fosuserbundle
Posted
技术标签:
【中文标题】Symfony 4 fosuserbundle【英文标题】: 【发布时间】:2018-05-30 09:49:00 【问题描述】:我从 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%"
第二:
我认为我必须在“config/packages/”目录中创建security.yml文件,对吗?
第三:
在哪个文件中添加路由?
你能帮帮我吗? :)
【问题讨论】:
据我所知,FOSUserBundle 仍然不支持 Symfony 4 :( 一方面,FOSUserBundle 是目前使用最广泛的第三方捆绑包。另一方面,它的历史很大程度上是无人维护和过度设计的。除非你真的真的需要支持多种类型的数据库,否则你最好遵循 Symfony 文档并实现自己的系统。这真的没什么,你会学到很多东西。 不是对您的建议@Cerad 的批评,我认为这是适合大型项目的方式,但 OP 还应注意他会错过许多与 FOSUser 集成的其他捆绑包。 @DonOmondi 是的,还有其他依赖 FOSUserBundle 的包。唉,我对他们也不是很满意。我偶尔会查看他们的代码并从他们那里窃取想法,但避免实际使用它们。 【参考方案1】:目前你不能在 Symfony4 上使用 FOSUSerBundle。支持尚未合并。可以关注开发here。
【讨论】:
几天后支持已合并到 master,但尚未标记。如果你喜欢生活在最前沿并且等不及它,你可以使用它来设置你对dev-master
的依赖:P github.com/FriendsOfSymfony/FOSUserBundle/pull/2639【参考方案2】:
如果你想在 Symfony4 中使用 FOSUserBundle,你可以试试 Ryan 提供的补丁 here。
【讨论】:
【参考方案3】:这是我发现可行的解决方案。
第一:
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 用户捆绑相关的路由时,这可能会让事情变得更加清晰。 https://symfony.com/doc/current/routing.html
【讨论】:
@DarraghEnright Fos 用户包 2.1 现在支持 symfony 4。我推荐使用它。我确实收到了配方错误,但是一旦您最初设置了捆绑包,就很容易解决。【参考方案4】:好的,我有同样的问题,应该是这样的 首先:正如@sean Baharmi 所说,您应该像这样创建 /config/packages/fos_user.yaml 和内部配置
fos_user:
db_driver: orm
firewall_name: main
user_class: App\Entity\Users
from_email:
address: "hello@youmail.com"
sender_name: "Sender Name"
然后在 framework.yaml 中您应该输入以下内容,因为 FOSUserBundle
依赖项
templating:
engines: ['twig', 'php']
也可以在 /config/rourtes/routes.yaml 中添加路由
fos_user:
resource: "@FOSUserBundle/Resources/config/routing/all.xml"
然后就可以工作了
希望对你有用
【讨论】:
【参考方案5】:我已经解决了这个问题:
使用 composer 下载 FOSUserBundle:
作曲家需要friendsofsymfony/user-bundle "~2.0"
在安装结束时,您将收到以下错误消息:
必须配置路径“fos_user”的子节点“db_driver”。
-
创建您的用户类
创建 src/Entity/User.php 作为扩展 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
-
配置应用程序的 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
-
配置 FOSUserBundle
新建文件config/packages/fos_user.yaml,用于配置FOSUserBundle
fos_user: db_driver: orm # other valid values are 'mongodb' and 'couchdb' firewall_name: main user_class: App\Entity\User from_email: address: "vincent@vfac.fr" sender_name: "vincent@vfac.fr"
更新 config/packages/framework.yaml 以添加模板配置
framework: templating: engines: ['twig', 'php']
-
导入 FOSUserBundle 路由
创建 config/routes/fos_user.yaml
fos_user: resource: "@FOSUserBundle/Resources/config/routing/all.xml"
-
更新您的数据库架构
如果尚未完成,您必须创建数据库
php bin/控制台原则:数据库:创建
使用来自您的用户类实体的信息更新架构
php bin/console 原则:schema:update --force
至此,在 Symfony 4 中,一切都已安装并配置为使用 FOSUserBundle。运行以下命令检查是否一切正常
作曲家更新
如果你没有任何错误信息,你可以测试! 您可以运行 Web 服务器来测试您的应用程序
php bin/控制台服务器:启动
全部教程here: https://vfac.fr/blog/how-install-fosuserbundle-with-symfony-4
【讨论】:
目前最好(最详细、最完整)的答案 非常感谢!你拯救了我的一天 谢谢哥们,帮了我大忙!以上是关于Symfony 4 fosuserbundle的主要内容,如果未能解决你的问题,请参考以下文章
从 Symfony 3.4 迁移到 Symfony 4.4 后,自定义投票器无法按预期工作
Symfony 4.4 - Swift Mailer 安装失败