<?php namespace App\Providers; use Illuminate\Support\Facades\Validator; use Illuminate\Support\ServiceProvider; use Illuminate\Pagination\Paginator; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\View; use Livewire\Livewire; use Illuminate\Support\Facades\Route; class AppServiceProvider extends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { // } /** * Bootstrap any application services. * * @return void */ public function boot() { // Use Bootstrap for pagination Paginator::useBootstrap(); // Custom validation rule: isunique Validator::extend('isunique', function ($attribute, $value, $parameters, $validator) { $value = strtolower($value); $query = DB::table($parameters[0])->whereRaw("LOWER({$attribute}) = ?", [$value]); if (isset($parameters[1])) { $query->where($parameters[1], '!=', $parameters[2]); } return $query->count() === 0; }); // Custom validation rule: exturl Validator::extend('exturl', function ($attribute, $value, $parameters, $validator) { $allowed_schemes = ['http', 'https', 'mailto', 'tel']; return in_array(parse_url($value, PHP_URL_SCHEME), $allowed_schemes, true); }); // Add namespace for blocks View::addNamespace('blocks', base_path('blocks')); // Customize Livewire script route Livewire::setScriptRoute(function ($handle) { return Route::get(asset('assets/vendor/livewire/livewire.js'), $handle); }); } }