zend-blog-3-backend

Форк
0
90 строк · 2.3 Кб
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: morontt
5
 * Date: 15.02.15
6
 * Time: 19:36
7
 */
8

9
namespace App\API\Transformers;
10

11
use App\DTO\ArticleDTO;
12
use App\Entity\Post;
13
use App\Entity\Tag;
14
use App\Utils\RuTransform;
15
use League\Fractal\Resource\ResourceInterface;
16

17
class PostTransformer extends BaseTransformer
18
{
19
    /**
20
     * @var array
21
     */
22
    protected array $availableIncludes = [
23
        'category',
24
    ];
25

26
    /**
27
     * @param Post $item
28
     *
29
     * @return array
30
     */
31
    public function transform(Post $item)
32
    {
33
        return [
34
            'id' => $item->getId(),
35
            'title' => $item->getTitle(),
36
            'url' => $item->getUrl(),
37
            'category' => $item->getCategory()->getId(),
38
            'categoryId' => $item->getCategory()->getId(),
39
            'hidden' => $item->isHide(),
40
            'disableComments' => $item->isDisableComments(),
41
            'text' => $item->getRawText(),
42
            'description' => $item->getDescription(),
43
            'tagsString' => implode(
44
                ', ',
45
                $item->getTags()->map(
46
                    function (Tag $tag) {
47
                        return $tag->getName();
48
                    }
49
                )->toArray()
50
            ),
51
            'timeCreated' => $this->dateTimeToISO($item->getTimeCreated()),
52
            'lastUpdate' => $this->dateTimeToISO($item->getLastUpdate()),
53
        ];
54
    }
55

56
    /**
57
     * @param Post $entity
58
     * @param ArticleDTO $data
59
     */
60
    public static function reverseTransform(Post $entity, ArticleDTO $data)
61
    {
62
        if (empty($data['title'])) {
63
            $data['title'] = 'no subject';
64
        }
65

66
        $entity
67
            ->setTitle($data['title'])
68
            ->setHide($data['hidden'])
69
            ->setDisableComments($data['disableComments'])
70
            ->setRawText($data['text'])
71
            ->setDescription($data['description'])
72
        ;
73

74
        if ($data['url']) {
75
            $entity->setUrl($data['url']);
76
        } else {
77
            $entity->setUrl(RuTransform::ruTransform($data['title']));
78
        }
79
    }
80

81
    /**
82
     * @param Post $entity
83
     *
84
     * @return ResourceInterface
85
     */
86
    public function includeCategory(Post $entity): ResourceInterface
87
    {
88
        return $this->collection([$entity->getCategory()], new CategoryTransformer(), 'categories');
89
    }
90
}
91

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.