You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							36 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							36 lines
						
					
					
						
							1.0 KiB
						
					
					
				| <?php | |
|  | |
| namespace frontend\widgets\post; | |
|  | |
| use core\entities\post\PostCategory; | |
| use core\repositories\post\read\PostCategoryReadRepository; | |
| use yii\base\Widget; | |
| use yii\helpers\Html; | |
|  | |
| class CategoriesWidget extends Widget | |
| { | |
|     /** @var PostCategory|null */ | |
|     public $active; | |
|  | |
|     private $categories; | |
|  | |
|     public function __construct(PostCategoryReadRepository $categories, $config = []) | |
|     { | |
|         parent::__construct($config); | |
|         $this->categories = $categories; | |
|     } | |
|  | |
|     public function run(): string | |
|     { | |
|         return Html::tag('div', implode(PHP_EOL, array_map(function (PostCategory $category) { | |
|             $active = $this->active && ($this->active->id == $category->id); | |
|             return Html::a( | |
|                 Html::encode($category->name), | |
|                 ['/post/category', 'slug' => $category->slug], | |
|                 ['class' => $active ? 'list-group-item active' : 'list-group-item'] | |
|             ); | |
|         }, $this->categories->getAll())), [ | |
|             'class' => 'list-group', | |
|         ]); | |
|     } | |
| } |