Implement Product in EasyAdmin
This commit is contained in:
parent
e990ddbc25
commit
ce7bd7a3eb
39
src/Controller/Admin/DashboardController.php
Normal file
39
src/Controller/Admin/DashboardController.php
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Controller\Admin;
|
||||||
|
|
||||||
|
use App\Entity\Product;
|
||||||
|
use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
|
||||||
|
use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
|
||||||
|
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
|
||||||
|
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
use Symfony\Component\Routing\Annotation\Route;
|
||||||
|
|
||||||
|
class DashboardController extends AbstractDashboardController
|
||||||
|
{
|
||||||
|
public function __construct(private AdminUrlGenerator $adminUrlGenerator)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Route('/admin', name: 'admin')]
|
||||||
|
public function index(): Response
|
||||||
|
{
|
||||||
|
return $this->redirect($this->adminUrlGenerator->setController(ProductCrudController::class)->generateUrl());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function configureDashboard(): Dashboard
|
||||||
|
{
|
||||||
|
return Dashboard::new()
|
||||||
|
->setTitle('IceCold');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function configureMenuItems(): iterable
|
||||||
|
{
|
||||||
|
// yield MenuItem::linktoRoute('Back to home', 'fas fa-home', 'home');
|
||||||
|
|
||||||
|
yield MenuItem::section('Products', 'fas fa-folder-open');
|
||||||
|
yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home');
|
||||||
|
yield MenuItem::linkToCrud('Products', 'fas fa-list', Product::class);
|
||||||
|
}
|
||||||
|
}
|
36
src/Controller/Admin/ProductCrudController.php
Normal file
36
src/Controller/Admin/ProductCrudController.php
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Controller\Admin;
|
||||||
|
|
||||||
|
use App\Entity\Product;
|
||||||
|
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
|
||||||
|
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
|
||||||
|
use EasyCorp\Bundle\EasyAdminBundle\Field\BooleanField;
|
||||||
|
use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
|
||||||
|
use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
|
||||||
|
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
|
||||||
|
|
||||||
|
class ProductCrudController extends AbstractCrudController
|
||||||
|
{
|
||||||
|
public static function getEntityFqcn(): string
|
||||||
|
{
|
||||||
|
return Product::class;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function configureFields(string $pageName): iterable
|
||||||
|
{
|
||||||
|
$fields = [];
|
||||||
|
|
||||||
|
switch ($pageName) {
|
||||||
|
case Crud::PAGE_INDEX:
|
||||||
|
case Crud::PAGE_DETAIL:
|
||||||
|
$fields[] = IdField::new('id');
|
||||||
|
}
|
||||||
|
|
||||||
|
$fields[] = BooleanField::new('enabled');
|
||||||
|
$fields[] = TextField::new('name');
|
||||||
|
$fields[] = TextEditorField::new('description');
|
||||||
|
|
||||||
|
return $fields;
|
||||||
|
}
|
||||||
|
}
|
@ -11,6 +11,6 @@ class TestController extends AbstractController
|
|||||||
#[Route('/1')]
|
#[Route('/1')]
|
||||||
public function test1()
|
public function test1()
|
||||||
{
|
{
|
||||||
return $this->render('base.html.twig');
|
return $this->render('base/base.html.twig');
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -20,7 +20,7 @@ class Product
|
|||||||
private $name;
|
private $name;
|
||||||
|
|
||||||
#[ORM\Column(type: 'text', nullable: true)]
|
#[ORM\Column(type: 'text', nullable: true)]
|
||||||
private $Description;
|
private $description;
|
||||||
|
|
||||||
public function getId(): ?int
|
public function getId(): ?int
|
||||||
{
|
{
|
||||||
@ -41,12 +41,12 @@ class Product
|
|||||||
|
|
||||||
public function getDescription(): ?string
|
public function getDescription(): ?string
|
||||||
{
|
{
|
||||||
return $this->Description;
|
return $this->description;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setDescription(?string $Description): self
|
public function setDescription(?string $description): self
|
||||||
{
|
{
|
||||||
$this->Description = $Description;
|
$this->description = $description;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
@ -16,25 +16,7 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
|
{% include 'base/navbar.html.twig' %}
|
||||||
<div class="container-fluid">
|
|
||||||
<i class="bi-shop" style="font-size: 2rem; padding-right: 0.5rem; color: white;"></i>
|
|
||||||
<a class="navbar-brand" href="#">IceCold</a>
|
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarCollapse">
|
|
||||||
<ul class="navbar-nav me-auto mb-2 mb-md-0">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link active" aria-current="page" href="#">Home</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">Link</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<main>
|
<main>
|
||||||
{% block body %}
|
{% block body %}
|
||||||
{% endblock %}
|
{% endblock %}
|
19
templates/base/navbar.html.twig
Normal file
19
templates/base/navbar.html.twig
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<i class="bi-shop" style="font-size: 2rem; padding-right: 0.5rem; color: white;"></i>
|
||||||
|
<a class="navbar-brand" href="#">IceCold</a>
|
||||||
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
|
<span class="navbar-toggler-icon"></span>
|
||||||
|
</button>
|
||||||
|
<div class="collapse navbar-collapse" id="navbarCollapse">
|
||||||
|
<ul class="navbar-nav me-auto mb-2 mb-md-0">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link active" aria-current="page" href="#">Home</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="{{ path('admin') }}">Admin</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
Loading…
Reference in New Issue
Block a user