Ассетные пути в среде разработки Symfony 2. Пути работают, но стиль не применяется

Я использую актив с меньшим количеством в Symfony 2 и MopaBootstrapBundle.

Динамически сгенерированный файл css кажется допустимым, но стиль не применяется. Если мы сбросим активы, то это сработает в prod, но я не хочу делать это в dev, так как это противоречит всей сути, о которой я думал.

config.yml:

assetic:
    debug:          %kernel.debug%
    use_controller: false
    bundles:        [ MopaBootstrapBundle ]
    #java: /usr/bin/java
    filters:
        cssrewrite:     ~
        less:
            node:       /usr/local/bin/node
            node_paths: [/usr/local/lib/node_modules]
            # auto apply less to all .less files
            apply_to:   "\.less$"

config_dev.yml

assetic:
    use_controller: true

в моем шаблоне:

{% stylesheets
    '@MopaBootstrapBundle/Resources/public/less/mopabootstrapbundle.less'
%}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" media="screen" />

визуализированный html:

 <link href="/app_dev.php/css/bab9907_mopabootstrapbundle_1.css" type="text/css" rel="stylesheet" media="screen" />

Этот файл разрешается, я могу вставить URL-адрес в адресную строку и увидеть действительный файл CSS.

Кроме того, если мы сбрасываем активы в prod, это также работает.

app/console assetic:dump --env=prod

Мы очищаем кеш продукта, и результат стилизуется. В dev я получаю нулевой стиль.

Я также побежал:

app/console assets:install --symlink web
Installing assets using the symlink option
Installing assets for Symfony\Bundle\FrameworkBundle into web/bundles/framework
Installing assets for Mopa\Bundle\BootstrapBundle into web/bundles/mopabootstrap
Installing assets for Symfony\Bundle\WebProfilerBundle into web/bundles/webprofiler
Installing assets for Sensio\Bundle\DistributionBundle into web/bundles/sensiodistribution

Все это то же самое, что и Javascript (файлы разрешаются при переходе по URL-адресам)

Я делаю что-то неправильно?


person Darren Beale    schedule 24.08.2012    source источник


Ответы (3)


Я тоже столкнулся с этим, и я также использовал FosRestBundle и неправильно настроил его:

fos_rest:
    format_listener:
        rules:
            - { path: '^/', priorities: ['json', 'html'], fallback_format: html, prefer_extension: true }

Это правило теперь применяется к КАЖДОМУ запросу к приложению и будет знать только json и html, а поскольку .css не соответствует, оно использует application/json.

Правильно должно быть:

fos_rest:
    format_listener:
        rules:
            - { path: '^/api', priorities: ['json', 'html'], fallback_format: html, prefer_extension: true }                
            - { path: '^/', priorities: [ 'html', '*/*'], fallback_format: html, prefer_extension: true }

Последняя строка применяется ко всему, что еще не сопоставлено, и говорит / использовать то, что было сопоставлено внутри, или что-то подобное. И вуаля use_controller: true снова работает

person phiamo    schedule 08.10.2013

Вы вставили URL-адрес с app_dev.php или без него? Если файл действительно разрешается, он должен работать и не является проблемой Sf2. Ваш веб-сайт указывает на «веб-каталог»? Если нет, попробуйте удалить начальный «/» в ссылке href или измените его на правильный путь. В dev у меня обычно что-то вроде этого:

<link href="http://myapp-static.dev/myapp/web/app_dev.php/css/all.css" media="screen" type="text/css" rel="stylesheet">

Я добавил переменную «assets_base_url» (которую я определил в twig globals и parameters.yml), и это был результирующий URL-адрес. Если бы я вместо этого использовал «/app_dev.php/css/all.css», это бы не удалось, потому что браузер интерпретировал бы это как «http://myapp-static.dev/app_dev.php/css/all.css».

person ChocoDeveloper    schedule 25.08.2012
comment
Я определенно вставил полный URL-адрес, включая app_dev.php. У меня также есть веб-узел моего VHost, указывающий на project_root/web. На данный момент я просто сбросил активы и вернусь к этому позже. - person Darren Beale; 27.08.2012

То же самое случилось со мной, так что вот как я это решил

Я изменил этот активный параметр в config_dev.yml на этот

assetic:
    use_controller: false

удалил кеш разработчика и все заработало

примечание: если вы используете MAMP, обязательно следуйте инструкциям по этой ссылке.

MopaBootstrapBundle без установки< /а>

person Mat    schedule 11.01.2013