2017-05-05 4 views
1

Dies sind die Codezeilen, die die Anbieter registrieren Ich verwende:Silex: Registrierung Zweig und SecurityServiceProvider Ergebnisse in Fehler

$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(); 

Dieses kein Problem geben, wenn ich einen Controller wie die folgenden laden, Keine Probleme tauchen auf.

Wenn ich jedoch versuche, etwas mit Zweig zu tun: entweder ein Global hinzufügen oder einen Filter hinzufügen. Ein Fehler wird auf meinem Bildschirm angezeigt.

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

Dies führt zu dem folgenden Fehler:

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

Diese seltsam ist, da es kein Problem ist, wenn ich nicht bin ein Filter oder global hinzufügen. Ich habe einen Fall gefunden, der dem ähnlich ist: here. Diese Lösung scheint mir jedoch nicht zu helfen. Wie kann ich das lösen?

+1

Haben Sie die zweite Antwort auf die ähnliche Frage geprüft Sie verknüpfen? Es ist nicht der akzeptierte, aber es hat mehr Stimmen. – mTorres

+0

.Ja habe ich das auch probiert! –

Antwort

1

Scheint so, als ob Sie versuchen, dem Dienst Funktionalität hinzuzufügen, bevor Sie alle Anbieter und Anwendungen hochfahren. Nach dem documentation sollte es so (Silex 2) erfolgen:

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

Und für 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; 
})); 
Verwandte Themen