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
			| 
											8 years ago
										 | <?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',
 | ||
|  |         ]);
 | ||
|  |     }
 | ||
|  | }
 |