更新:symfonyの3、引数は(使用setArguments)サービスに渡すことがカント
私は、(自動1を生成)AppBundleで同じことをした事が正常に動作し、かつ(var/cache/dev/appDevDebugProjectContainer.php
で)コンパイルされたバージョンでパラメータは
return $this->services['app.roles'] = new \AppBundle\Role\RolesProvider(array(0 => 'ROLE_SUPER', 1 => 'ROLE_ADMIN', 2 => 'ROLE_USER'));
を次のように渡されたが、私の生成に何のパラメータをバンドルしなかったで可決された。
symfonyの(バージョン3を使用してアプリケーションを構築メートル。 1.6)、つまらない。どんな助けもありがとう。
を1.generateバンドル以下のような2.createサービスクラス(いずれも再利用可能な選択されていない)
「をsymfonyのコンソール・ツール」を使用して、次のよう
詳細。
class RolesProvider(){
public function __construct(array $roles){
//...
}
}
services.yml:
services:
user.roles.provider:
class: UserBundle\Role\RolesProvider
3.my拡張クラス:
class UserExtension extends Extension {
public function load(array $configs, ContainerBuilder $container) {
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.yml');
$rolesProviderDef = $container->getDefinition('user.roles.provider');
$rolesProviderDef->setArguments([
$config['roles']
]);
}
}
4.myのConfigurationクラス
class Configuration implements ConfigurationInterface{
public function getConfigTreeBuilder() {
$treeBuilder = new TreeBuilder;
$rootNode = $treeBuilder->root('user');
$rootNode->children()
->arrayNode('roles')
->prototype('scalar')->end()
->end();
return $treeBuilder;
}
}
5.config.yml:
user:
roles: ["ROLE_SUPER", "ROLE_ADMIN", "ROLE_USER"]
私は$this->get('user.roles.provider')
呼び出されると、それは常に私にエラーを与える:
Type error: Argument 1 passed to UserBundle\Role\RolesProvider::__construct() must be of the type array, none given,
は、私はいくつかの設定かそこらを逃していましたか?私は拡張クラスで$の設定と$ rolesProviderDef変数をダンプし、この
$コンフィグ
array(1) {
["roles"]=>
array(3) {
[0]=>
string(10) "ROLE_SUPER"
[1]=>
string(10) "ROLE_ADMIN"
[2]=>
string(9) "ROLE_USER"
}
}
いくつかのコードを持っ
:
は---------を更新しました
//...
["arguments":protected]=>
array(1) {
[0]=>
array(3) {
[0]=>
string(10) "ROLE_SUPER"
[1]=>
string(10) "ROLE_ADMIN"
[2]=>
string(9) "ROLE_USER"
}
}
//...
あなたは '$の設定[「役割」]'本当に配列をチェックしましたか? –
こんにちは@MertÖksüz、私はいくつかの変数をダンプし、私のポストを更新します。ありがとう –
私はちょうどあなたのコードを複製し、物事は期待どおりに動作します。あなたは開発モードで作業していると思いますか?おそらく、キャッシュをクリアしてみてください。設定ダンプには3つの役割がありますが、config.ymlには2つの役割しかありませんか? 'symfonyコンソールツール'はbin/console generate:bundleを意味しますか?あなたのvar_dumpsが動作しているので、さまざまなクラス名が正しいでしょう。 – Cerad