0

ようこそ config.yml ファイルがあります

d_facebook:
    file:   %kernel.root_dir%/../src/FacebookBundle/Facebook/FacebookInit.php
    app_id: 296925470418713
    secret: fb4d0a99bcf80e55f47077ffadcac921
    cookie: true
    permissions: [email, user_birthday, user_location, user_about_me, user_location]

次に、ファイル config.yml からデータを取得するこのクラスがあります。

<?php

namespace D\FacebookBundle\Facebook;

use Symfony\Component\Yaml\Yaml;
use Symfony\Component\DependencyInjection\ContainerBuilder;

use D\FacebookBundle\Facebook\Facebook;
use D\FacebookBundle\Facebook\FacebookConfig;

class FacebookInit
{
    public $hAPI;
    public $userProfile;
    public $user;
    public $logoutUrl;
    public $loginUrl;
    public $config;

    public function __construct()
    {
        $this->config = Yaml::parse('/facebookx/app/config/config.yml');

        $this->hAPI = new Facebook(array(
            'appId' => $this->config['d_facebook']['app_id'],
            'secret' => $this->config['d_facebook']['secret']
            ));
        $this->setUserProfile();
    }
}

これを行うより良い方法は何ですか?config.yml ファイルから変数を取得するにはどうすればよいですか? 私は例を求めますか?

4

2 に答える 2

1

構成ファイルには、次のようなものがあります。

parameters:
    d_facebook:
        file:   %kernel.root_dir%/../src/FacebookBundle/Facebook/FacebookInit.php
        app_id: 296925470418713
        secret: fb4d0a99bcf80e55f47077ffadcac921
        cookie: true
        permissions: [email, user_birthday, user_location, user_about_me, user_location]

S2コントローラーから、次のパラメーターの配列を取得できます。

$faceBookParameters = $this->container->getParameter('d_facebook');

ただし、Facebookクラスをサービスにし、依存性注入を使用してパラメーターを設定することをお勧めします。したがって、services.ymlでは:

services:        
    facebook:
        class:  Path\To\Facebook
        arguments:  
            - '%d_facebook%'  # This injects your parameters

あなたのコントローラーであなたはただするでしょう:

$facebook = $this->get('facebook');

サービスに関するセクションをもう一度お読みください。 http://symfony.com/doc/current/book/service_container.html

于 2012-12-07T15:01:39.430 に答える
0

おそらく、バンドルのセマンティック構成を公開するようなことをしたいですか?

これは、ルート レベルの構成「名前空間」(「d_facebook」など) から構成を取得する場合です。バンドルの DependencyInjection フォルダーに構成と拡張クラスを作成します。構成クラスには、名前空間に含めることができるキーの設定を定義する「getConfigTreeBuilder」メソッドがあります。次に、拡張クラスには、解析された構成を受け取る「load」メソッドがあり、$container->setParameter('key', 'value') を使用して他のクラスの構成にアクセスできるようにします。リンクされたクックブックには詳細があります。

于 2012-12-08T00:38:54.217 に答える