Интеграция Bootstrap шаблона в Laravel приложение
Интеграция Bootstrap в Laravel позволяет значительно упростить процесс создания стильных и отзывчивых интерфейсов для веб-приложений. В статье подробно рассматривается, как подключить CSS-фреймворк к Laravel, чтобы сэкономить время и усилия на разработку frontend-части.
Вы узнаете, как быстро настроить Bootstrap, а также какие нюансы нужно учесть при работе с этим фреймворком в связке с Laravel. Мы покажем простые шаги для оптимизации вашего рабочего процесса и улучшения внешнего вида сайта.
Введение
Фреймворк Bootstrap пользуется огромной популярностью среди веб-разработчиков, а объединение шаблонов Bootstrap с Laravel значительно упрощает процесс создания мощных и сложных веб-приложений. Интеграция Bootstrap и Laravel обеспечивает огромные преимущества для разработчиков.
В этом руководстве мы будем использовать тему Bootstrap для оформления панели администратора в Laravel-приложении.

Прежде всего, нам понадобится HTML-шаблон панели администратора для фреймворка Bootstrap. Я скачал пример на сайте creative-tim.com, вы же можете выбрать любой другой.
Шаг 1: установка Laravel и создание проекта
Фреймворк Laravel устанавливают в каталог /var/www с помощью следующей команды:
composer create-project –prefer-dist laravel/laravel laraveltest
Чтобы проверить правильность установки, выполните в командной строке следующую команду:
composer –V
Результат – версия приложения.
Шаг 2: создание макета
Макет – главный файл проекта, мы добавляем в него CSS и JavaScript. В папке layouts создайте файл dashboard.blade.php и вставьте в него приведенный ниже код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="apple-touch-icon" sizes="76x76" href="../assets/img/apple-icon.png">
<link rel="icon" type="image/png" href="../assets/img/favicon.png">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title>
WebApp
</title>
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no' name='viewport' />
<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700,200" rel="stylesheet" />
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css" rel="stylesheet">
<link href="/assets/css/bootstrap.min.css" rel="stylesheet" />
<link href="/assets/css/paper-dashboard.css?v=2.0.0" rel="stylesheet" />
</head>
<body class="">
<div class="wrapper ">
@include('includes.sidebar')
<div class="main-panel">
@include('includes.header')
@yield('content')
@include('includes.footer')
</div>
</div>
<!-- Core JS Files -->
<script src="/assets/js/core/jquery.min.js"></script>
<script src="/assets/js/core/popper.min.js"></script>
<script src="/assets/js/core/bootstrap.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY_HERE"></script>
</body>
</html>Затем создайте файл панели администратора, назовите его index.blade.php и вставьте в него следующий код:
@extends('layoutes.dashboard')
@section('content')
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="content">
<div class="row">
<div class="col-xs-5">
<div class="icon-big icon-warning text-center">
<i class="ti-server"></i>
</div>
</div>
<div class="col-xs-7">
<div class="numbers">
<p>Capacity</p>
105GB
</div>
</div>
</div>
<div class="footer">
<hr />
<div class="stats">
<i class="ti-reload"></i> Updated now
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="content">
<div class="row">
<div class="col-xs-5">
<div class="icon-big icon-success text-center">
<i class="ti-wallet"></i>
</div>
</div>
<div class="col-xs-7">
<div class="numbers">
<p>Revenue</p>
$1,345
</div>
</div>
</div>
<div class="footer">
<hr />
<div class="stats">
<i class="ti-calendar"></i> Last day
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="content">
<div class="row">
<div class="col-xs-5">
<div class="icon-big icon-danger text-center">
<i class="ti-pulse"></i>
</div>
</div>
<div class="col-xs-7">
<div class="numbers">
<p>Errors</p>
23
</div>
</div>
</div>
<div class="footer">
<hr />
<div class="stats">
<i class="ti-timer"></i> In the last hour
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card">
<div class="content">
<div class="row">
<div class="col-xs-5">
<div class="icon-big icon-info text-center">
<i class="ti-twitter-alt"></i>
</div>
</div>
<div class="col-xs-7">
<div class="numbers">
<p>Followers</p>
+45
</div>
</div>
</div>
<div class="footer">
<hr />
<div class="stats">
<i class="ti-reload"></i> Updated now
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="header">
<h4 class="title">Users Behavior</h4>
<p class="category">24 Hours performance</p>
</div>
<div class="content">
<div id="chartHours" class="ct-chart"></div>
<div class="footer">
<div class="chart-legend">
<i class="fa fa-circle text-info"></i> Open
<i class="fa fa-circle text-danger"></i> Click
<i class="fa fa-circle text-warning"></i> Click Second Time
</div>
<hr>
<div class="stats">
<i class="ti-reload"></i> Updated 3 minutes ago
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="card">
<div class="header">
<h4 class="title">Email Statistics</h4>
<p class="category">Last Campaign Performance</p>
</div>
<div class="content">
<div id="chartPreferences" class="ct-chart ct-perfect-fourth"></div>
<div class="footer">
<div class="chart-legend">
<i class="fa fa-circle text-info"></i> Open
<i class="fa fa-circle text-danger"></i> Bounce
<i class="fa fa-circle text-warning"></i> Unsubscribe
</div>
<hr>
<div class="stats">
<i class="ti-timer"></i> Campaign sent 2 days ago
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card ">
<div class="header">
<h4 class="title">2015 Sales</h4>
<p class="category">All products including Taxes</p>
</div>
<div class="content">
<div id="chartActivity" class="ct-chart"></div>
<div class="footer">
<div class="chart-legend">
<i class="fa fa-circle text-info"></i> Tesla Model S
<i class="fa fa-circle text-warning"></i> BMW 5 Series
</div>
<hr>
<div class="stats">
<i class="ti-check"></i> Data information certified
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsectionТеперь мы создадим файл для генерирования шапки страницы панели администрирования. Назовем этот файл header.blade.php и вставим в него приведенный ниже код:
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar bar1"></span>
<span class="icon-bar bar2"></span>
<span class="icon-bar bar3"></span>
</button>
<a class="navbar-brand" href="#">Dashboard</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li>
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="ti-panel"></i>
<p>Stats</p>
</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="ti-bell"></i>
<p class="notification">5</p>
<p>Notifications</p>
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="#">Notification 1</a></li>
<li><a href="#">Notification 2</a></li>
<li><a href="#">Notification 3</a></li>
<li><a href="#">Notification 4</a></li>
<li><a href="#">Another notification</a></li>
</ul>
</li>
<li>
<a href="#">
<i class="ti-settings"></i>
<p>Settings</p>
</a>
</li>
</ul>
</div>
</div>
</nav>Для боковой панели страницы создадим файл sidebar.blade.php и вставим в него следующий код:
<div class="sidebar" data-background-color="white" data-active-color="danger">
<div class="sidebar-wrapper">
<div class="logo">
<a href="" class="simple-text">
Creative Tim
</a>
</div>
<ul class="nav">
<li class="active">
<a href="dashboard.html">
<i class="ti-panel"></i>
<p>Dashboard</p>
</a>
</li>
<li>
<a href="user.html">
<i class="ti-user"></i>
<p>User Profile</p>
</a>
</li>
<li>
<a href="table.html">
<i class="ti-view-list-alt"></i>
<p>Table List</p>
</a>
</li>
<li>
<a href="typography.html">
<i class="ti-text"></i>
<p>Typography</p>
</a>
</li>
<li>
<a href="icons.html">
<i class="ti-pencil-alt2"></i>
<p>Icons</p>
</a>
</li>
<li>
<a href="maps.html">
<i class="ti-map"></i>
<p>Maps</p>
</a>
</li>
<li>
<a href="notifications.html">
<i class="ti-bell"></i>
<p>Notifications</p>
</a>
</li>
<li class="active-pro">
<a href="upgrade.html">
<i class="ti-export"></i>
<p>Upgrade to PRO</p>
</a>
</li>
</ul>
</div>
</div>Следующий код генерирует футер панели администрирования. Вставьте его в созданный файл footer.blade.php:
<footer class="footer">
<div class="container-fluid">
<nav class="pull-left">
<ul>
<li>
<a href="">
Creative Tim
</a>
</li>
<li>
<a href="">
Blog
</a>
</li>
<li>
<a href="">
Licenses
</a>
</li>
</ul>
</nav>
<div class="copyright pull-right">
© <script>document.write(new Date().getFullYear())</script>, made with <i class="fa fa-heart heart"></i> by <a href="">Creative Tim</a>
</div>
</div>
</footer>Запустите проект в браузере – вы увидите администраторскую панель, как на иллюстрации к статье.
Комментарии
эта статья мне наконец-то помогла определиться между tailwind css и bootstrap в пользу бутстрапа)
tailwind css - это вообще противоречие самой философии CSS. Стили делались для того, чтобы отделить оформление от структуры. Прописывание стиля в элементе через атрибут style="..." считался дурным тоном и прибегать к нему нужно было в крайнем случае. А tailwind css делает именно это. Мы кодируем внешний вид прямо в html-размере. Просто вместо style='margin:5rem; padding:3rem' пишем class='m-5 p-3'. Ну возможно кому-то это покажется удобным из-за уменьшения количества символов. Ну и только.