2016-07-01 4 views
0

in meiner config.yml Datei importieren ich eine params.php Datei, die einen Parameter konfiguriert:Symfony: Kann nicht klar Cache bei der Verwendung von PHP globale Variable innerhalb config.yml

// app/config/params.php 

<?php 
$container->setParameter('base_name', $_SERVER['BASE']); 

ich für VichUploader Konfiguration verwenden Sie diesen Parameter:

// app/config/config.yml 
imports: 
    - { resource: parameters.yml } 
    - { resource: security.yml } 
    - { resource: services.yml } 
    - { resource: params.php } 

vich_uploader: 
    db_driver: orm 
    mappings: 
     tag_image: 
      uri_prefix:   %base_name%/../images/tags 

Es funktioniert gut in meinem Projekt, aber ich habe einen Fehler, wenn ich Cache löschen möchten:

$ php bin/console cache:clear 

enter image description here

Ich benutze Symfony3. Ich folgte den Richtlinien von this topic.

+0

Was ist das $ _SERVER ['BASE']? Kannst du nicht stattdessen eine env-Variable verwenden? –

+1

Wahrscheinlich werden Sie in diesem Fehler mit jedem Konsolenbefehl auftreten, wo die Variable $ _SERVER nicht existiert. Ich schlage vor, dass Sie sich das offizielle Dokument über [Wie setze ich externe Parameter im Service Container] (http://symfony.com/doc/current/cookbook/configuration/external_parameters.html) ansehen. – Matteo

+0

habe ich schon gesehen Diese Dokumentation und ich gehen wie im zweiten Abschnitt "Miscellaneous Configuration" vor. Ich werde versuchen, einen virtuellen Host zu konfigurieren. Vielen Dank. – Felurian

Antwort

2

Wenn es nur über Fehler nicht cli Modus bekommen, können Sie einfach Ihre params.php diese Weise

// app/config/params.php 

<?php 
if (php_sapi_name() != "cli") { 
    $container->setParameter('base_name', $_SERVER['BASE']); 
} 

IMO ändern, wenn Sie externe Parameter einstellen möchten, hier die Art und Weise ist, sollten Sie es tun http://symfony.com/doc/current/cookbook/configuration/external_parameters.html

+0

Ich habe diese Dokumentation schon gesehen und gehe weiter wie im zweiten Abschnitt "Miscellaneous Configuration". Deine Lösung funktioniert, ich habe gerade eine "else" -Bedingung hinzugefügt, um base_name mit einer leeren Zeichenfolge zu setzen, denn wenn nicht, habe ich einen Fehler "nicht existierender Parameter base_name". Ich werde die Lösung mit dem virtuellen Host versuchen, aber Ihre Lösung funktioniert für mich. Vielen Dank. – Felurian

0

Der Schlüssel "BASE" existiert nicht, wenn Sie ein Skript in der Konsole aufrufen. Sie müssen zuerst prüfen, ob dieser Schlüssel in Ihrer params.php existiert. Ich kenne das Vich Uploader Bundle nicht, aber ich denke, dass Sie keine richtige Konfiguration für den Befehl zum Löschen des Caches benötigen. Also, wenn der Basisschlüssel nicht existiert, denke ich, dass Sie eine leere Zeichenfolge als Config festlegen können.

Verwandte Themen