eramitgupta/laravel-setup-layout
A package for setting up layout in Laravel applications.
Advanced Layout Setup for Laravel Applications ๐ฅ
A versatile, easy-to-use package to streamline layout creation in Laravel.
Features
- Simplifies layout management.
- Customizable configurations to fit your app's needs.
- Improves structure and organization in Laravel projects.
Installation
Install the package via Composer:
composer require erag/laravel-setup-layoutStep 1: Register Service Provider
Laravel 11.x
Ensure the service provider is registered in /bootstrap/providers.php:
return [
// ...
LaravelSetupLayoutServiceProvider::class
];Laravel 10.x
Add the service provider in config/app.php:
'providers' => [
// ...
LaravelSetupLayout\LaravelSetupLayoutServiceProvider::class,
];Step 2: Publish Configuration
Run this command to publish the configuration file:
php artisan vendor:publish --tag=LaravelSetupLayout --forceStep 4: assets config/layout-assets.php
<?php
return [
#THEME_VENDORS <x-web-app-layout> Define web assets for different pages
'THEME_WEB_ASSETS' => [
'home' => [
// CSS files for the home page
'css' => [
'assets/css/demo.css',
],
// JavaScript files for the home page
'js' => [
'assets/js/demo.js',
],
],
// You can add more as per your requirement
],
#THEME_ASSETS <x-app-layout> Define global assets used across all pages
'THEME_ASSETS' => [
'global' => [
// Global CSS files, such as Bootstrap
'css' => [
'https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css',
// You can add more global CSS files here
],
// Global JavaScript files, such as Bootstrap JS
'js' => [
'https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js',
// You can add more global JavaScript files here
],
],
],
#THEME_VENDORS <x-app-layout> Define vendor assets specific to certain pages or components
'THEME_VENDORS' => [
'demo' => [
// CSS files for the login page or component
'css' => [
'assets/css/demo.css',
],
// JavaScript files for the login page or component
'js' => [
'assets/js/demo.js',
],
],
// You can add more as per your requirement
],
];Step 4: Usage ๐ค
Create a Controller
Generate a basic controller:
php artisan make:controller HomeControllerCreate a View
Create a view for your application:
php artisan make:view homeThis will create home.blade.php in resources/views.
Subdirectory Controller
To create a controller in a subfolder, use:
php artisan make:controller Dashboard/HomeControllerThis creates HomeController under app/Http/Controllers/Dashboard.
Subdirectory View
For views in subdirectories:
php artisan make:view dashboard.homeCreates home.blade.php in resources/views/dashboard.
Step 4: Define Routes
Home Route:
Route::get('/', [App\Http\Controllers\HomeController::class, 'index']);Dashboard Route:
Route::get('/dashboard', [App\Http\Controllers\Dashboard\HomeController::class, 'dashboard']);Ensure you have matching controller methods, like so:
// HomeController.php
namespace App\Http\Controllers;
class HomeController extends Controller
{
public function index()
{
addWebAsset(['home']);
return view('home');
}
}
// Dashboard/HomeController.php
namespace App\Http\Controllers\Dashboard;
class HomeController extends Controller
{
public function dashboard()
{
addVendors(['demo']);
return view('dashboard.home');
}
}Step 5: Use Layout Components
Add the layout components in your Blade files:
Home Layout (Front-End)
<!-- resources/views/home.blade.php -->
<x-web-app-layout>
<h1>Welcome to the Front-End ๐</h1>
</x-web-app-layout>Dashboard Layout
<!-- resources/views/dashboard/home.blade.php -->
<x-app-layout>
<h1>Welcome to the Dashboard ๐</h1>
</x-app-layout>Blade Directives for Scripts and Styles
To include page-specific styles and scripts:
<!-- resources/views/home.blade.php -->
@push('page_styles')
<link rel="stylesheet" href="path/to/home-styles.css">
@endpush
@push('page_scripts')
<script src="path/to/home-scripts.js"></script>
@endpushPage Title Setup
To set the page title dynamically:
// HomeController.php
public function index()
{
addWebAsset(['home', 'jq']);
$data['title'] = 'Home Page';
return view('home', $data);
}And in your view:
<!-- resources/views/home.blade.php -->
<x-web-app-layout>
@section('title', $title)
<h1>Welcome to the Home Page ๐</h1>
</x-web-app-layout>License
The MIT License (MIT). See the License file for details.
GitHub @eramitgupta ย ยทย
LinkedIn @eramitgupta ย ยทย
Support Donate