2016-12-15 10 views
0

Я проверял эту страницу на их документы: http://documentation.concrete5.org/developers/assets/requiring-an-assetconcrete5 импорта JS или CSS в одной странице

Но ни один из этих вариантов не работают для меня. Ошибок нет. Он просто игнорирует метод requireAsset.

Контроллер:

<?php 
namespace Application\Controller\SinglePage; 

use PageController; 

class MyAccount extends PageController 
{ 
    public function view() 
    { 
    $this->requireAsset('javascript', 'js/my_account'); 
    } 
} 

ответ

1

Успели, наконец, найти, как сделать это правильно, после долгих раскопок. Вот как ...

приложение/Config/app.php:

<?php 

return array(
    'assets' => array(

     'foobar/my-account' => array(
      array(
       'javascript', 
       'js/my_account.js' 
      ), 
     ), 

    ), 
); 

Контроллер:

<?php 
namespace Application\Controller\SinglePage; 

use PageController; 

class MyAccount extends PageController 
{ 
    public function view() 
    { 
    $this->requireAsset('javascript', 'foobar/my-account'); 
    } 
} 
2

, как вы сделали это работает, но это не очень удобно и Безразлично 'использовать все варианты. Проблема возникла из-за того, что вам требовался актив в вашем контроллере, который вы никогда не заявляли в первую очередь.

Теперь это объявлено в вашем приложении app.php, но это необязательно. Вы можете сделать это и в контроллере, что упростит работу.

<?php 
namespace Application\Controller\SinglePage; 

use PageController; 
use AssetList; 
use Asset; 

class MyAccount extends PageController 
{ 
    public function view() 
    { 
     $al = AssetList::getInstance(); 

     // Register (declare) a javascript script. here I called it foobar/my-script which is the reference used to request it 
     $al->register(
      'javascript', 'foobar/my-script', 'js/my_account.js', array('version' => '1.0', 'position' => Asset::ASSET_POSITION_FOOTER, 'minify' => true, 'combine' => true) 
     ); 

     // Register (declare) a css stylesheet. here I called it foobar/my-stylesheet which is the reference used to request it 
     $al->register(
      'css', 'foobar/my-stylesheet', 'css/my_account.css', array('version' => '1.0', 'position' => Asset::ASSET_POSITION_HEADER, 'minify' => true, 'combine' => true) 
     ); 

     // Gather all the assets declared above in an array so you can request them all at once if needed 
     $assets = array(
      array('css', 'foobar/my-stylesheet'), 
      array('javascript', 'foobar/my-script') 
     ); 

     // Register the asset group that includes all your assets (or a subset as you like). here I called it foobar/my-account which is the reference used to request it 
     $al->registerGroup('foobar/my-account', $assets); 

     // require the group so all the assets are loaded together 
     $this->requireAsset('foobar/my-account'); 

     // Alternatively you can call only one of them 
     // $this->requireAsset('javascript', 'foobar/my-script'); 
    } 
} 
+0

Блестящий! Так работает 'AssetList'. Я видел несколько примеров этого, но ни один из них не был полным, что было очень неприятно. Еще раз спасибо! – adamj

 Смежные вопросы

  • Нет связанных вопросов^_^