2013-05-05 2 views
27

Sono nuovo di PHP, ho un'applicazione sviluppata in PHP e framework symfony2. Ho cambiato il file html, la modifica non si riflette quando sto aggiornando la pagina.Come ricaricare la cache di twig in symfony2

01. I restarted the server No luck.

02. I tried to remove the twig folder from /protected/cache/ page it self not loading.

raccomanda gentilmente, io sto usando server Tomcat da distribuire.

Nota: Non ho la riga di comando symfony2 configurata sul server.

+0

Avete accesso FTP al server? – PMoubed

risposta

34

Il modo più semplice, digitare il comando:

rm -rf app/cache/* 

Il punto è: tutti i file in app/cache/ possono essere rimossi liberamente, si rigenerano quando necessario.

Se davvero si vuole cancellare solo la cache ramoscello:

rm -rf app/cache/<environment>/twig 

Sostituire <environment> da dev, prod, o test base alle vostre esigenze.

+0

Dovresti anche eliminare templates.php se hai sovrascritto altri modelli di bundle e vuoi che ne trovi di nuovi. –

27

Durante la creazione di una nuova istanza Twig_Environment, è possibile passare una matrice di opzioni come secondo argomento del costruttore. Uno di questi è auto_reload. Quando si sviluppa con Twig, è utile ricompilare il modello ogni volta che cambia il codice sorgente. Se non si fornisce un valore per l'opzione auto_reload, verrà determinato automaticamente in base al valore debug.

Set auto_reload essere true:

$twig = new Twig_Environment($loader, array('auto_reload' => true)); 

la documentazione di Twig per gli sviluppatori: http://twig.sensiolabs.org/doc/api.html#environment-options

10

Ho avuto un problema simile, ma cancellando la cache-cartella non ha avuto alcun impatto sul mio modello e io non so perché Ciò che sembra risolvere il mio problema ora è il seguente codice nel mio config_dev.yml:

twig: 
    cache: false 

Forse questa è anche una soluzione per voi, in modo che non è necessario utilizzare il comando per tutto il tempo.

Riferimenti:

TwigBundle Configuration

Twig Environment Options

+0

buona idea Ho un altro caso in cui ramoscello non sembra ricompilare sempre, l'auto_reload viene ignorato a volte. Quindi per ora vado senza cache. – John

2

Se si utilizza opcache/altra caching simile, l'eliminazione di cartella della cache del ramoscello non aggiornare modelli come la cache ramoscello consistono solo i file .php. È necessario eliminare la cartella cache di twig + il file php di esecuzione che contiene:

opcache_reset();

1

È necessario apportare alcune modifiche nel file app.php situato nella cartella Web.

Cambio:

$kernel = new AppKernel('prod', false);  

a:

$kernel = new AppKernel('prod', true); 

e cancellare la cache, se si desidera.

0

è possibile aggiungere una funzione come questa:

public function renderView($view, array $parameters = array()) 
{ 
    $loader = new \Twig_Loader_Filesystem($this->container->getParameter("template_path")); 
    $twig = new \Twig_Environment($loader, array('auto_reload' => true, 
     'cache' => false 
    )); 

    /////////////////////add a translate filter/////////////////////// 
    $getTextdomain = new \Twig_SimpleFilter('trans',function ($string){ 
     return $this->container->get('translator')->trans($string); 
    }); 

    $twig->addFilter($getTextdomain); 
    ////////////////////////////////////////////////////////////////// 

    ///////////////////////////Add an extension twig////////////////// 
    $twig->addExtension(new Extension()); 
    ////////////////////////////////////////////////////////////////// 

    return $twig->render($view, $parameters); 
}