Я пытаюсь использовать внешний CSS для стилизации раздела моей страницы - в частности, раздела формы моей страницы регистрации. Я использую по умолчанию app.css
, который поставляется с Laravel.
Тем не менее, я не хочу включать app.css
в мой заголовок HTML, поскольку это дает мне нежелательный эффект на других частях страницы. Поэтому я хочу, чтобы он стилизовал только мои HTML-формы на странице.
В настоящее время я использовал методы asset()
или HTML::style()
, подобные этим, в разделе формы:
@section('form')
<style> @import "{{ asset('css/app.css') }}"; </style>
<form>...</form>
@endsection
OR
@section('form')
{{ HTML::style('css/app.css') }}
<form>...</form>
@endsection
Оба метода правильно загружают стиль, но влияют на всю страницу, а не только на элементы формы.
Я попытался использовать класс ViewComposer
, чтобы решить эту проблему, установив переменную в ViewComposer для моего желаемого стиля - возвращая его только тогда, когда я запрашиваю требуемое представление:
class ViewComposer
{
public function compose(View $view)
{
$data = [];
switch($view->getName())
{
...
case 'sections.register':
$this->data = ['style'=>"<style> @import \"". asset('css/app.css') . "\"; </style>"];
break;
}
return $view->with($this->data);
}
}
Однако, когда я рендерим вложенное представление sections.register
, я получаю переменную стиля следующим образом:
@section('form')
{{ $style ?? '' }}
<form>...</form>
@endsection
вывод в браузере не анализируется как css, а отображается как есть:
<style> @import "{{ asset('css/app.css') }}"; </style>
Итак, есть ли способ, которым я могу анализировать внешние CSS только для данного раздела представления на html-странице, и это может быть достигнуто с помощью класса ViewComposer?
UPDATE:
Я пробовал несколько вещей и использовал это:
@section('form')
{!! $style ?? '' !!}
<form>...</form>
@endsection
CSS анализируется, но все еще применяется ко всей странице. Мне все еще нужно, чтобы он применялся только к разделу формы.