Laravel: динамически добавлять и удалять CSS или Script - PullRequest
0 голосов
/ 18 мая 2019

Это действительно легко включить все распространенные CSS или Script на странице. Но проблема возникает, когда вам не нужен CSS или скрипт на странице. Если вы оформите мой код ниже, вы поймете, что я пытаюсь сказать.

Я уже создал свой класс CSS в header.blade.php и включил его в master.blade.php. После этого index.blade.php расширяет master.blade.php

Но проблема в том, что когда index.blade.php рендерит, это создает новый экземпляр класса CSS. экземпляр заголовка пропал.

Я пытаюсь использовать свой класс CSS

=> as service provider
=> share as view variable
=> as a Facade

1) CSS.php (myclass для добавления или удаления CSS)

namespace App\AppGlobal;

class CSS {
    public $css = []; // all my css filename and path is store in here

    // add css
    public function add($path, $filename) {
        $path = asset($path);
        $this->css[$filename] = $path;

        return $this->css;
    }


    // remove css
    public function remove($filename) {
        if(array_key_exists($filename, $this->css)) {
            unset($this->css[$filename]);
        }
    }

    // print css
    public function print() {
        $output = '';
        if(count($this->css)) {
            foreach($this->css as $filename => $path) {
                $output .= "<link rel='stylesheet' href='{$path}/{$filename}'>\n";
            }
        }
        echo $output;
    }
}

2) master.blade.php (см. Ниже)

{{-- include tha header --}}
@include('dashboard.inc.header')

{{-- the main content section --}}
@yield('main-content-section')

{{-- include tha footer --}}
@include('dashboard.inc.footer')

3) header.blade.php (см. Ниже)

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>{{config('app.name', 'ColorSpray')}}</title>

    {{-- add all common css --}}
    <?php $css->add('some/path', 'filename.css') ?>
    {{-- add additional css--}}
    @stack('add-css')
    {{-- remove exitsing css--}}
    @stack('remove-css')
    {{-- print all my css --}}
    <?php $css->print(); ?>
</head>
<body>

4) index.blade.php (index.blade.php расширяет master.blade.php)

@extends('dashboard.layouts.master')

@push('add-css')
    {{-- add any additional css for index page --}}
    <?php
        $css->add('your/path/name', 'filename.css');
    ?>

@endpush

@push('remove-css')
    {{-- remove any common css that i don't need in index page --}}
    <?php
        $css->remove('your/path/name', 'commonFilename.css');
    ?>
@endpush


@section('main-content-section')

@endsection


@section('script')
@endsection
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...