PHP code example of spatie / laravel-view-components
1. Go to this page and download the library: Download spatie/laravel-view-components 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/ */
spatie / laravel-view-components example snippets
namespace App\Http\ViewComponents;
use Illuminate\Http\Request;
use Illuminate\Contracts\Support\Htmlable;
class NavigationComponent implements Htmlable
{
/** \Illuminate\Http\Request */
private $request;
/** @var string */
private $backgroundColor;
public function __construct(Request $request, string $backgroundColor)
{
$this->request = $request;
$this->backgroundColor = $backgroundColor;
}
public function toHtml(): string
{
return view('components.navigation', [
'activeUrl' => $this->request->url(),
'backgroundColor' => $this->backgroundColor,
]);
}
}
namespace App\Http\ViewComponents;
use Illuminate\Contracts\Support\Htmlable;
use Illuminate\Contracts\Auth\Guard;
use Spatie\Menu\Laravel\Menu;
class MainMenuComponent implements Htmlable
{
/** @var \Illuminate\Contracts\Auth\Guard */
private $guard;
/** @var string */
private $class;
public function __construct(Guard $guard, string $class = null)
{
$this->guard = $guard;
$this->class = $class;
}
public function toHtml(): string
{
$menu = Menu::new()
->addClass($this->class)
->url('/', 'Home')
->url('/projects', 'Projects');
if ($this->guard->check()) {
$menu->url('/admin', 'Adminland');
}
return $menu;
}
}
return [
/*
* The root namespace where components reside. Components can be referenced
* with camelCase & dot notation.
*
* Example: 'root_namespace' => App\Http\ViewComponents::class
*
* `@render('myComponent')
* => `App\Http\ViewComponents\MyComponent`
*/
'root_namespace' => 'App\Http\ViewComponents',
/*
* Register alternative namespaces here, similar to custom view paths.
*
* Example: 'navigation' => App\Services\Navigation::class,
*
* `@render('navigation::mainMenu')`
* => `App\Services\Navigation\MainMenu`
*/
'namespaces' => [
// 'navigation' => App\Services\Navigation::class,
],
];
use Illuminate\Http\Request;
class MyComponent implements Htmlable
{
public function __construct(Request $request, string $color)
{
$this->request = $request;
$this->color = $color;
}
// ...
}