1. Go to this page and download the library: Download rosengate/sigil 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/ */
rosengate / sigil example snippets
/*
* Package Service Providers...
*/
SigilProvider::class,
namespace App\Http;
class Kernel extends \Sigil\SigilKernel {
}
namespace App\Http\Controllers;
class RootController extends \Sigil\Controller
{
public function groupWeb()
{
return WebController::class;
}
}
namespace App\Http\Controllers;
use Exedra\Routeller\Attributes\Path;
#[Path('/')]
class WebController extends \Sigil\Controller
{
#[Path('/')]
public function get()
{
return view('welcome');
}
}
namespace App\Http\Controllers;
use Exedra\Routeller\Attributes\Path;
#[Path('/')]
class WebController extends \Sigil\Controller
{
#[Path('/contact-us')]
public function getContactUs()
{
}
#[Path('/contact-us')]
public function postContactUs()
{
}
}
namespace App\Http\Controllers;
use Exedra\Routeller\Attributes\Path;
#[Path('/')]
class WebController extends \Sigil\Controller
{
#[Path('/about-us')]
public function executeAboutUs()
{
}
}
use Exedra\Routeller\Attributes\Path;
class RootController extends \Sigil\Controller
{
public function groupWeb()
{
return WebController::class;
}
public function groupAdmin()
{
return AdminController::class;
}
}
#[Path('/admin')]
class AdminController extends \Sigil\Controller
{
#[Path('/dashboard')]
public function getDashboard()
{
}
}
#[Path('/')]
class WebController extends \Sigil\Controller
{
public function groupEnquiries()
{
return EnquiriesController::class;
}
}
#[Path('/enquiries')]
class EnquiriesController extends \Sigil\Controller
{
#[Path('/form')]
public function getForm()
{
}
#[Path('/form')]
public function postForm()
{
}
}
namespace App\Http\Controllers;
use Exedra\Routeller\Attributes\Path;
use Exedra\Routeller\Attributes\Middleware;
use App\Http\Middleware\VerifyCsrfToken;
use Illuminate\Session\Middleware\StartSession;
use App\Http\Middleware\EncryptCookies;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
#[Middleware(EncryptCookies::class)]
#[Middleware(AddQueuedCookiesToResponse::class)]
#[Middleware(StartSession::class)]
class WebController extends \Sigil\Controller
{
#[Path('/contact-us')]
#[Middleware(VerifyCsrfToken::class)]
public function postContactUs()
{
}
}
namespace App\Http\Controllers;
//.. imports
#[Path('/blogs/:blog-id')]
class BlogApiController extends \Sigil\Controller
{
public function middleware(Request $request, $next, BloggerModel $blogger)
{
$blog = BlogModel::findOrFail($request->route('blog-id'));
app()->instance(BlogRepository::class, new BlogRepository($blogger, $blog));
return $next($request);
}
#[Path('/articles')]
public function getArticles(BlogRepository $blogService)
{
return $blogService->getArticles();
}
}
//...
use Sigil\Context;
use Exedra\Routeller\Attributes\State;
use Exedra\Routeller\Attributes\Path;
#[Path('/')]
#[State('is_ajax', true)]
class WebController extends \Sigil\Controller
{
#[Path('/contact-us')]
#[State('is_ajax', false)]
public function getContactUs(Context $context)
{
var_dump($context->getState('is_ajax')); // false
}
}
use Sigil\Context;
use Exedra\Routeller\Attributes\Path;
use Exedra\Routeller\Attributes\Series;
#[Series('roles', 'admin')]
class AdminController extends \Sigil\Controller
{
#[Path('/dashboard')]
#[Series('roles', 'librarian')]
public function getLibrary(Context $context)
{
var_dump($context->getSeries('roles')); // prints ['admin', 'staff']
}
#[Series('roles', 'accountant')]
#[Path('/billing')]
public function getOrders(Context $context)
{
var_dump($context->getSeries('roles')); // prints ['admin', 'accountant']
}
}
use Exedra\Routeller\Attributes\Flag;
use Exedra\Routeller\Attributes\Path;
use Sigil\Context;
#[Flag('authenticated')]
class AdminController extends \Sigil\Controller
{
#[Path('/dashboard')]
#[Flag('is_beta')]
public function getDashboard(Context $context)
{
var_dump($context->getFlags()); // ['authenticated', 'is_beta']
}
}
use Sigil\Context;
use App\Models\User;
class RootController extends \Sigil\Controller
{
public function middleware($request, $next, Context $context)
{
if ($context->hasFlag('authenticated')) {
// do some authentication
if (!session()->has('user_id'))
throw new NotAuthenticatedException();
$user = User::find(session()->get('user_id'));
if ($context->hasFlag('is_beta')) {
if (!$user->isBetaAllowed())
throw new NoAccessException();
}
if ($context->hasSeries('roles'))
if (!in_array($user->role, $context->getSeries('roles')))
throw new NoAccessException();
}
return $next($request);
}
}
namespace App\Attributes;
use Exedra\Routeller\Attributes\Series;
#[\Attribute]
class Role extends Series
{
public function __construct($role)
{
parent::__construct(static::class, $role);
}
}
namespace App\Http\Middleware;
use Sigil\Context;
use \App\Attributes\Role;
class RolesCheckMiddleware
{
public function handle($request, $next, Context $context)
{
if ($roles = $context->getSeries(Role::class)) {
//.. do a check if user has these roles
}
return $next($request);
}
}
namespace App\Http\Controllers;
use Exedra\Routeller\Attributes\Path;
use App\Attributes\Role;
#[Path('/accounts')]
#[Role('accountant')]
class ManageAccountsController extends \Sigil\Controller
{
public function get()
{
}
}
use Exedra\Routeller\Attributes\Path;
#[Path('/books/:book-id')]
class BookApiController extends \Sigil\Controller
{
public function middleware($request, $next)
{
app()->instance(Book::class, Book::findOrFail($request->route('book-id')));
return $next($request);
}
#[Path('/')]
public function get(Book $book)
{
return $book;
}
#[Path('/')]
public function post(Book $book, $request)
{
$book->author = $request->author;
$book->isbn = $request->isbn;
$book->save();
return $book;
}
}
use Exedra\Routeller\Attributes\Path;
use Sigil\Utilities\Attributes\Model;
use App\Models\AuthorModel;
#[Path('/authors/:author-id')]
#[Model(AuthorModel::class, 'author-id')]
class AuthorApiController extends \Sigil\Controller
{
public function get(AuthorModel $author)
{
return $author;
}
}
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Http\Request;
class RootController extends \Sigil\Controller
{
public function middleware(Request $request, $next)
{
try {
return $next($request);
} catch (ModelNotFoundException $e) {
//.. do something
}
}
}
use Exedra\Routeller\Attributes\Path;
use Sigil\Utilities\Attributes\Model;
use App\Models\OrderModels;
use App\Transformers\OrderTransformer;
#[Path('/orders/:order-id')]
#[Model(OrderModel::class, 'order-id')]
class OrderApiController extends \Sigil\Controller
{
#[Transform(OrderTransformer::class)]
public function get(OrderModel $order)
{
return $order;
}
}