2013-04-26 3 views
0

J'ai ce code:PHP: Variable non définie

$fm = $app['assetic.filter_manager']; 
$app['assetic.filter_manager'] = $app->share(
    $app->extend('assetic.filter_manager', function($fm, $app) { 
     $fm->set('yui_css', new Assetic\Filter\Yui\CssCompressorFilter(
      '/usr/share/yui-compressor/yui-compressor.jar' 
     )); 
     $fm->set('yui_js', new Assetic\Filter\Yui\JsCompressorFilter(
      '/usr/share/yui-compressor/yui-compressor.jar' 
     )); 

     return $fm; 
    }) 
); 

$app['assetic.asset_manager'] = $app->share(
    $app->extend('assetic.asset_manager', function($am, $app) { 
     $am->set('styles', new Assetic\Asset\AssetCache(
      new Assetic\Asset\GlobAsset(
       __DIR__ . '/assetic/resources/css/*.css', 
//this below is the line 50. 
       array($fm->get('yui_css')) 
      ), 
      new Assetic\Cache\FilesystemCache(__DIR__ . '/assetic/cache') 
     )); 
     $am->get('styles')->setTargetPath('css/styles'); 

     return $am; 
    }) 
); 

Je reçois cette erreur:

PHP Notice: Undefined variable: fm in index.php on line 50 

Si j'ai défini la variable fm $, pourquoi suis-je obtenir cette erreur?

Répondre

3

essayez ceci:

$app->extend('assetic.asset_manager', function($am, $app) use ($fm) { 
+0

merci, cela fonctionne, mais je dois taper 'use ($ fm)' – ziiweb

3

Si ce bon de commande, vous déclarant et le mettre à une valeur non définie ($app['assetic.filter_manager'] n'est pas réglé jusqu'à ce que la ligne suivante).

Définissez $ fm après en affectant cela.

$app['assetic.filter_manager'] = $app->share(
    $app->extend('assetic.filter_manager', function($fm, $app) { 
     $fm->set('yui_css', new Assetic\Filter\Yui\CssCompressorFilter(
      '/usr/share/yui-compressor/yui-compressor.jar' 
     )); 
     $fm->set('yui_js', new Assetic\Filter\Yui\JsCompressorFilter(
      '/usr/share/yui-compressor/yui-compressor.jar' 
     )); 

     return $fm; 
    }) 
); 

$fm = $app['assetic.filter_manager'];