lumenpress / routing
Requires
- lumenpress/nimble: ~0.1
Requires (Dev)
- kint-php/kint: ^2.2
- laravel/lumen-framework: 5.4.*
- lumenpress/testing: ^0.1.1
- phpunit/phpunit: ~5.0
- vlucas/phpdotenv: ^2.4
This package is not auto-updated.
Last update: 2024-11-23 04:45:52 UTC
README
The routing needs to be used with lumenpress/laravel or lumenpress/lumen.
Installation
composer require lumenpress/routing
Register the provider in bootstrap/app.php
:
$app->register(LumenPress\Routing\ServiceProvider::class);
It should be noted that Laravel must also be registered in the bootstrap/app.php
file, otherwise it will not work properly.
Usage
We must first get an instance of the WordPress router.
$router = app('wp.router');
Or use the router service container as a facade.
use LumenPress\Routing\Facades\Route;
Routing
$router->is($condition, $callback); $router->get($condition, $callback); $router->post($condition, $callback); $router->put($condition, $callback); $router->patch($condition, $callback); $router->delete($condition, $callback); $router->options($condition, $callback); $router->group([ 'middleware' => 'auth', 'namespace' => 'App\Http\Controllers' ], function ($router) { // });
As a facade.
use LumenPress\Routing\Facades\Route; Route::is($condition, $callback); Route::get($condition, $callback); Route::post($condition, $callback); Route::put($condition, $callback); Route::patch($condition, $callback); Route::delete($condition, $callback); Route::options($condition, $callback); Route::group([ 'middleware' => 'auth', 'namespace' => 'App\Http\Controllers' ],function () { // });
Conditions
Route Parameters
Route::is(string $condition, $callback); Route::is([$condition => int|string|array $args], $callback);
template
Query Condition
Route Condition
['template' => string|array $template]
Callback Arguments
LumenPress\Nimble\Models\Post $post
;
// register templates LumenPress\Nimble\Models\Post::registerTemplate([ 'home' => [ 'name' => 'Home Page' ], 'contact' => [ 'name' => 'Contact Us' ], 'about' => [ 'name' => 'Contact Us' ], ]); Route::is(['template' => 'home'], function (\LumenPress\Nimble\Models\Post $post) {}); // Multiple Route::is(['template' => 'contact', 'about'], $callback);
page
Query Condition
Route Condition
page
['page' => int|string|array $page]
Callback Arguments
LumenPress\Nimble\Models\Post $post
optional
;
// page.php Route::is('page', function (\LumenPress\Nimble\Models\Post $post) {}); // page-2.php Route::is(['page' => 2], $callback); // page-sample-page.php Route::is(['page' => 'sample-page'], $callback); // page-about.php or page-contact.php Route::is(['page' => ['about', 'contact']], $callback); // By path Route::is(['page' => 'about/company'], $callback); Route::is(['page' => 'about/staff'], $callback);
single
Query Condition
Route Condition
single
['single' => int|string|array $post]
Callback Arguments
LumenPress\Nimble\Models\Post $post
optional
;
// single.php Route::is('single', function (\LumenPress\Nimble\Models\Post $post) {}); // query by post id Route::is(['single' => 1], $callback); // single-book.php Route::is(['single' => 'book'], $callback); // single-book.php or single-newspaper.php Route::is(['single' => ['book', 'newspaper']], $callback); // single-book-foo.php // or single-book-bar.php // or single-newspaper-foo.php // or single-newspaper-bar.php $single = [ // $post_type, $slug ['book', 'foo'], ['book', 'bar'], ['newspaper', 'foo'], ['newspaper', 'bar'], ]; Route::is(['single' => $single], $callback);
singular
Query Condition
Route Condition
singular
['singular' => string|array $posttype]
Callback Arguments
LumenPress\Nimble\Models\Post $post
optional
;
// singular.php Route::is('singular', function (\LumenPress\Nimble\Models\Page $post) {}); // single-book.php Route::is(['singular' => 'book'], $callback); // single-book.php or single-newspaper.php Route::is(['singular' => ['newspaper', 'book']], $callback);
attachment
Query Condition
Route Condition
attachment
Callback Arguments
LumenPress\Nimble\Models\Attachment $attachment
optional
;
// attachment.php Route::is('attachment', $callback);
embed
Since 4.5
Query Condition
Route Condition
embed
Callback Arguments
LumenPress\Nimble\Models\Post $post
optional
;
// embed.php Route::is('embed', function (LumenPress\Nimble\Models\Post $post) {});
archive
Query Condition
Route Condition
archive
['archive' => string|array $postType]
Callback Arguments
string $postType
optional
;
// archive.php Route::is('archive', $callback); // archive-book.php Route::is(['archive' => 'book'], $callback); // archive-newspaper.php or archive-book.php Route::is(['archive' => ['newspaper', 'book']], function ($postType) {});
tax
Query Condition
Route Condition
tax
['tax' => string|array $taxonomy]
['tax' => ...[string|array $taxonomy, int|string|array string|array $term]]
Callback Arguments
LumenPress\Nimble\Models\Taxonomy $taxonomy
optional
;
// taxonomy.php Route::is('tax', function (\LumenPress\Nimble\Models\Taxonomy $taxonomy) {}); // taxonomy-channel.php Route::is(['tax' => 'channel'], $callback); // taxonomy-channel-bbc1.php Route::is(['tax' => [['channel', 'bbc1']]], $callback);
category
Query Condition
Route Condition
category
['category' => string|array $category]
Callback Arguments
LumenPress\Nimble\Models\Category $category
optional
;
// category.php Route::is('category', function (\LumenPress\Nimble\Models\Category $category) {}); // category-9.php Route::is(['category' => 9], $callback); // category-news.php Route::is(['category' => 'news'], $callback); // by category name Route::is(['category' => 'Stinky Cheeses'], $callback); // by id, slug, name... Route::is(['category' => [9, 'blue-cheese', 'Stinky Cheeses']], $callback);
tag
Query Condition
Route Condition
tag
['tag' => string|array $tag]
Callback Arguments
LumenPress\Nimble\Models\Tag $tag
optional
;
// tag.php Route::is('tag', function (\LumenPress\Nimble\Models\Tag $tag) {}); // tag-30.php Route::is(['tag' => 30], $callback); // tag-extreme.php Route::is(['tag' => 'extreme'], $callback); // tag-mild.php Route::is(['tag' => 'mild'], $callback); // by id, slug, name... Route::is(['tag' => [30, 'mild', 'extreme']], $callback);
author
Query Condition
Route Condition
author
['author' => int|string|array $author]
Callback Arguments
LumenPress\Nimble\Models\User $author
optional
;
// author.php Route::is('author', function (\LumenPress\Nimble\Models\User $user) {}); // author-4.php Route::is(['author' => 4], $callback); // author-john-jones.php Route::is(['author' => 'john-jones'], $callback); // by display name Route::is(['author' => 'Vivian'], $callback); // by mixed Route::is(['author' => [4, 'john-jones', 'Vivian']], $callback);
date
Query Condition
Route Condition
date
Callback Arguments
$year
optional
;$month
optional
;$day
optional
;
// date.php Route::is('date', function ($year = null, $month = null, $day = null) {});
home
Query Condition
Route Condition
home
// home.php Route::is('home', $callback);
front
Query Condition
Route Condition
front
// front_page.php Route::is('front', $callback);
search
Query Condition
Route Condition
search
// search.php Route::is('search', $callback);
404
Query Condition
Route Condition
404
// 404.php Route::is('404', $callback);
Custom Route Condition
Route::registerCondition('author.role', function ($role) { if (! is_author()) { return false; } $author = get_queried_object(); return $role == $author->roles[0]; }); Route::is(['author.role' => 'administrator'], $callback);