File: D:/HostingSpaces/SBogers10/momsecurity.komma.nl/app/Components/Types/BlogCategory.php
<?php
namespace App\Components\Types;
use App\Components\ComponentTypes;
use App\PostLabels\Models\PostLabel;
use App\Posts\PostService;
use Komma\KMS\Components\Component\ViewComponent;
use Komma\KMS\Components\ComponentType\Types\AbstractComponentType;
use Komma\KMS\Core\Attributes\Select;
use Komma\KMS\Core\Attributes\TextField;
use Komma\KMS\Core\ModelServiceInterface;
class BlogCategory extends AbstractComponentType
{
protected int $id = ComponentTypes::BLOG_CATEGORY;
protected string $name = 'blog-category';
public function defineAttributesAndTabs(){
/** @var ModelServiceInterface $questionSetModels */
$blogCategoryService = app(ModelServiceInterface::class);
$blogCategoryService->setModelClassName(PostLabel::class);
$this->addItems([
(new TextField())
->setReference('title' )
->setLabelText(__('KMS::attributes/components.title')),
(new Select())
->setReference('blog_category')
->setLabelText('Blog category')
->setItems($blogCategoryService->getOptionsForSelect()->toArray()),
]);
}
public function prepare(ViewComponent $viewComponent)
{
/** @var PostService $postService */
$postService = app()->make(PostService::class);
$postLabel = PostLabel::find($viewComponent->blog_category);
if(isset($postLabel)) $viewComponent->posts = $postService->getAmountOfPostsByCategory($postLabel);
else $viewComponent->posts = collect();
}
}