我正在尝试合并FOSFacebookBundle和FOSUserBundle。单独使用FosUserBundle工作正常,但当我尝试将facebookbundle与他整合时我得到了路由错误。我正在使用Symfony 2.3.4
无法导入资源 “@ FOSFacebookBundle / Resources / config / routing.xml”来自 “C:/ XAMPP / htdocs中/ Symfonia /应用/配置\ routing.yml中”。确保 “FOSFacebookBundle / Resources / config / routing.xml”包是正确的 在应用程序内核类中注册并加载。
我在routing.yml的每个地方都有4个空格键。当然我在AppKernel.php
中实现了它我的routing.yml:
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
fos_user_profile:
resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
prefix: /profile
fos_user_register:
resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
prefix: /register
fos_user_resetting:
resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
prefix: /resetting
fos_user_change_password:
resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
prefix: /profile
_welcome:
pattern: /
defaults: { _controller: AcmeUserBundle:Welcome:index }
_security_check:
pattern: /login_fb_check
_security_logout:
pattern: /logout
fos_facebook_channel:
resource: "@FOSFacebookBundle/Resources/config/routing.xml"
Config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
services:
my.facebook.user:
class: Acme\UserBundle\Security\User\Provider\FacebookProvider
arguments:
facebook: "@fos_facebook.api"
userManager: "@fos_user.user_manager"
validator: "@validator"
framework:
#esi: ~
translator: { fallback: %locale% }
secret: %secret%
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection: ~
validation: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_proxies: ~
session: ~
fragments: ~
http_method_override: true
# Twig Configuration
twig:
debug: %kernel.debug%
strict_variables: %kernel.debug%
# Assetic Configuration
assetic:
debug: %kernel.debug%
use_controller: false
bundles: [ ]
#java: /usr/bin/java
filters:
cssrewrite: ~
#closure:
# jar: %kernel.root_dir%/Resources/java/compiler.jar
#yui_css:
# jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar
# Doctrine Configuration
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
# if using pdo_sqlite as your database driver, add the path in parameters.yml
# e.g. database_path: %kernel.root_dir%/data/data.db3
# path: %database_path%
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
# Swiftmailer Configuration
swiftmailer:
transport: %mailer_transport%
host: %mailer_host%
username: %mailer_user%
password: %mailer_password%
spool: { type: memory }
fos_user:
db_driver: orm
firewall_name: main
user_class: Acme\UserBundle\Entity\User
fos_facebook:
alias: facebook
app_id: 123456879
secret: s3cr3t
cookie: true
permissions: [email, user_birthday, user_location]
和我的 security.yml
security:
providers:
chain_provider:
chain:
providers: [fos_user_bundle, my_fos_facebook_provider]
fos_user_bundle:
id: fos_user.user_provider.username
my_fos_facebook_provider:
id: my.facebook.user
encoders:
FOS\UserBundle\Model\UserInterface: sha512
firewalls:
main:
pattern: ^/
form_login:
provider: chain_provider
csrf_provider: form.csrf_provider
fos_facebook:
app_url: "http://apps.facebook.com/appName/"
server_url: "http://localhost/facebookApp/"
login_path: /login
check_path: /login_fb_check
default_target_path: /
provider: chain_provider
logout: true
anonymous: true
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 }
- { path: ^/facebook/, role: [ROLE_FACEBOOK] }
- { path: ^/.*, role: [IS_AUTHENTICATED_ANONYMOUSLY] }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
感谢您的帮助!
答案 0 :(得分:2)
我遇到了同样的问题,刚才解决了。
似乎未下载routing.xml
文件,请在您应用的\vendor\friendsofsymfony\facebook-bundle\FOS\FacebookBundle\Resources\config
文件夹中搜索该文件。
如果不在此处,只需下载并从存储库“https://github.com/FriendsOfSymfony/FOSFacebookBundle/blob/master/Resources/config/routing.xml”
复制它 routing.xml
如下:
<?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_facebook_channel" pattern="/channel.html">
<default key="_controller">FOSFacebookBundle:Facebook:channel</default>
<requirement key="_method">GET</requirement>
</route>
</routes>
答案 1 :(得分:1)
似乎捆绑匹配版本1.2。*的最新稳定版本不包含路由文件,因此如果您使用的是composer并且最小稳定性设置为“stable”(默认情况下),那么只是像这样引用允许dev稳定性的bundle:
require {
...,
"friendsofsymfony/facebook-bundle": "1.2.*@dev"
}
然后只使用composer更新包:
php composer update friendsofsymfony/facebook-bundle
这样,当他们克隆repo并通过composer在他们自己的locar工作目录中安装verdors时,问题将不会复制到同一项目中的其他开发人员。
答案 2 :(得分:-1)
只需浏览此链接并检查路由和配置文件的
FOSFacebookBundle and FOSUserBundle
以及更多说明
https://github.com/FriendsOfSymfony/FOSFacebookBundle/tree/2.0#include-the-login-button-in-your-templates
并确保这一点
将此捆绑包添加到应用程序的内核中:
// app/ApplicationKernel.php
public function registerBundles()
{
return array(
// ...
new FOS\FacebookBundle\FOSFacebookBundle(),
// ...
);
}