LinkStack/app/Providers/AppServiceProvider.php

62 lines
1.7 KiB
PHP
Executable File

<?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);
});
}
}