2017-05-05 47 views
1

註冊嫩枝和SecurityServiceProvider結果這些代碼,註冊我使用的提供者線路:捷希凱:在錯誤

$app->register(new Silex\Provider\TwigServiceProvider, ['twig.path' => __DIR__ . '/../resources/views']); 
$app->register(new Silex\Provider\SecurityServiceProvider()); 
$app->register(new MenuServiceProvider(), ['knp_menu.views_path' => __DIR__ . '/../resources/views']); 
$app->register(new Silex\Provider\TranslationServiceProvider()); 
$app->register(new FormServiceProvider()); 
$app->register(new Silex\Provider\ValidatorServiceProvider()); 
$app->register(new Silex\Provider\LocaleServiceProvider()); 
$app->register(new Silex\Provider\SessionServiceProvider()); 
$app->register(new Silex\Provider\AssetServiceProvider(), array(
    'assets.version' => 'v1', 
    'assets.version_format' => '%s?version=%s', 
    'assets.named_packages' => array(
     'css' => ['base_path' => Config::get('silex/baseUrl') . 'css/'], 
     'img' => ['base_path' => Config::get('silex/baseUrl') . 'img/'] 
    ), 
)); 

$app['security.firewalls'] = array(); 

這不會給一個問題,當我加載控制器像下面,沒有問題彈出。

$routes->match('/', function (Request $request) use ($app) { 
    return 'Yes'; 
})->bind('home'); 

但是,當我嘗試使用樹枝做一些事情:添加一個全局或添加一個過濾器。我的屏幕上顯示一個錯誤。

$app['twig']->addFilter(new Twig_SimpleFilter('json_decode', function ($string) { 
    return json_decode($string); 
})); 

這將導致以下錯誤:

Fatal error: Uncaught InvalidArgumentException: Identifier "security.authentication_providers" is not defined. in H:\Software\xamp\htdocs\UserSystem\vendor\pimple\pimple\src\Pimple\Container.php:96 Stack trace: #0

這很奇怪,因爲有當我不添加過濾器或全局沒有問題。我發現了一個與此相似的案例:here。但是,這個解決方案似乎並不適合我。我該如何解決這個問題?

+1

你檢查了第二個答案你鏈接到類似的問題?這不是公認的,但它有更多的選票。 – mTorres

+0

。是的,我也試過這個! –

回答

1

好像你正在嘗試在啓動所有提供程序和應用程序之前向服務添加功能。按照documentation它應該做這樣的(Silex的2):

$app->extend('twig', function(Twig_Environment $twig, Application $app) { 
    $twig->addFilter(new Twig_SimpleFilter('json_decode', 'json_decode')); 
    return $twig; 
}); 

而對於Silex的1.3:

$app['twig'] = $app->share($app->extend('twig', function(Twig_Environment $twig, Application $app) { 
    $twig->addFilter(new Twig_SimpleFilter('json_decode', 'json_decode')); 
    return $twig; 
}));