PHP code example of jasminecms / jasmine
1. Go to this page and download the library: Download jasminecms/jasmine library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
jasminecms / jasmine example snippets
'routes' => [
'web' => [
'register' => true,
'prefix' => 'jasmine',
'middleware' => ['web'],
],
'api' => [
'register' => true,
'prefix' => 'jasmine/api',
'middleware' => ['api'],
],
],
Jasmine::registerLocales(['en', 'he']);
Jasmine::registerBreadable(\App\Models\MyModel::class);
// optionally control the sidebar menu item
Jasmine::registerBreadable(\App\Models\MyModel::class, addMenuItem: false);
Jasmine::registerBreadable(\App\Models\MyModel::class, menuPriority: 10);
Jasmine::registerPage(\App\Pages\Home::class);
// optionally control the sidebar menu item
Jasmine::registerPage(\App\Pages\Home::class, addMenuItem: false);
Jasmine::registerPage(\App\Pages\Home::class, menuPriority: 10);
Jasmine::registerCustomStyle('https://example.com/path/to/style.css');
Jasmine::registerCustomScript('https://example.com/path/to/app.js');
Jasmine::registerPermission('reports.sales.view');
Jasmine::registerPermission('reports.sales.export');
// internal
\Jasmine::registerSideBarMenuItem('settings', fn() => [
'title' => __('Settings'),
'icon' => 'bi-gear',
'href' => route('jasmine.my.route', 'my-param-value'),
'is-route' => ['r' => 'jasmine.my.route', 'p' => ['my-param' => 'my-param-value']],
], 70);
// external
\Jasmine::registerSideBarMenuItem('site-triple', fn() => [
'href' => 'https://triple.co.il',
'title' => 'Triple',
'icon' => 'bi-link-45deg text-danger',
'target' => '_blank',
], 100);
\Jasmine::registerSideBarMenuItem('settings', fn() => [
'title' => __('Settings'),
'href' => route('jasmine.my.route'),
'hidden' => !auth()->user()->jCan('settings.edit'),
]);
// the parent — only needs a title and icon
\Jasmine::registerSideBarMenuItem('reports', fn() => [
'title' => __('Reports'),
'icon' => 'bi-graph-up',
'opened' => false, // whether the group starts expanded
], 60);
// children
\Jasmine::registerSideBarSubMenuItem('reports', 'sales', fn() => [
'title' => __('Sales'),
'href' => route('jasmine.my.reports', 'sales'),
'is-route' => ['r' => 'jasmine.my.reports', 'p' => ['report' => 'sales']],
], 10);
\Jasmine::registerSideBarSubMenuItem('reports', 'traffic', fn() => [
'title' => __('Traffic'),
'href' => route('jasmine.my.reports', 'traffic'),
], 20);
use Jasmine\Jasmine\Dashboard\DashboardCard;
// blade card
Jasmine::registerDashboardCard('welcome', DashboardCard::blade(
fn($request) => view('dashboard.welcome', ['user' => $request->user()])
)->width(6)->priority(10));
// vue card, SFC as a string
Jasmine::registerDashboardCard('stats', DashboardCard::vue(
<<<'VUE'
<script setup>
defineProps({ count: Number })
</script>
<template>
<div class="card"><div class="card-body">{{ count }} posts</div></div>
</template>
VUE,
props: fn($request) => ['count' => \App\Models\Post::count()],
)->width(4));
// vue card from a file
Jasmine::registerDashboardCard('orders', DashboardCard::vueFile(
resource_path('js/jasmine-cards/Orders.vue'),
props: fn($request) => ['recent' => \App\Models\Order::latest()->limit(5)->get()],
));
Jasmine::registerDashboardCard('cache', DashboardCard::blade(fn() => view('dashboard.cache'))
->get('status', fn($request) => ['size' => Cache::size()])
->post('clear', fn($request) => Cache::flush())
);
// routes behind Jasmine authentication (admin panel routes)
Jasmine::registerAuthenticatedRouteGroup(function () {
Route::get('my-reports/{report}', MyReportController::class)->name('jasmine.my.reports');
});
// stateless api routes
Jasmine::registerApiRouteGroup(function () {
Route::get('my-endpoint', MyApiController::class)->name('jasmine.api.my-endpoint');
});
// guest routes (no authentication)
Jasmine::registerGuestRouteGroup(function () {
Route::get('public-status', PublicStatusController::class);
});
Jasmine::registerAuthenticatedRouteGroup($closure, 'my-plugin');
// later, e.g. in an app overriding a plugin's routes
Jasmine::unregisterAuthenticatedRouteGroup('my-plugin');
Jasmine::registerAuthenticatedRouteGroup($otherClosure, 'my-plugin');
Jasmine::registerOauth2Sso(
'Facebook', //name
'https://www.facebook.com/images/fb_icon_325x325.png', //icon
'{client_id}',
'{client_secret}',
'https://www.facebook.com/v3.3/dialog/oauth',
'https://graph.facebook.com/v3.3/oauth/access_token',
['email'],
false, // accepts boolean or callback
function ($token) {
$token = json_decode($token, true);
$res = Http::asJson()->get('https://graph.facebook.com/v3.3/me', [
'access_token' => $token['access_token'],
'fields' => 'name,email',
]);
return [
'name' => $res->json('name'),
'email' => $res->json('email'),
];
},
);
php artisan vendor:publish --tag=jasmine-locales-ui