zend-blog-3-backend
143 строки · 5.6 Кб
1<?php
2
3namespace Mtt\TestBundle\DataFixtures\ORM;
4
5use App\Entity\Post;
6use App\Service\TextProcessor;
7use App\Utils\RuTransform;
8use Doctrine\Bundle\FixturesBundle\Fixture;
9use Doctrine\Common\DataFixtures\DependentFixtureInterface;
10use Doctrine\Common\Persistence\ObjectManager;
11use Doctrine\Persistence\ObjectManager as ObjectManagerInterface;
12use Faker\Factory as FakerFactory;
13use Symfony\Component\DependencyInjection\ContainerAwareInterface;
14use Symfony\Component\DependencyInjection\ContainerInterface;
15
16class LoadPostData extends Fixture implements ContainerAwareInterface, DependentFixtureInterface
17{
18const COUNT_POSTS = 50;
19
20/**
21* @var ContainerInterface
22*/
23protected $container;
24
25/**
26* {@inheritdoc}
27*/
28public function setContainer(ContainerInterface $container = null)
29{
30$this->container = $container;
31}
32
33/**
34* @param ObjectManager $manager
35*/
36public function load(ObjectManagerInterface $manager)
37{
38/* @var TextProcessor $textProcessor */
39$textProcessor = $this->container->get('mtt_blog.text_processor');
40
41$post = new Post();
42$post->setTitle('Тестовая запись')
43->setUrl(RuTransform::ruTransform('Тестовая запись'))
44->setCategory($manager->merge($this->getReference('category-2')))
45->setDescription('метатег description тестовй записи')
46->setRawText('<p>Тестовая запись, собственно...</p>')
47->addTag($manager->merge($this->getReference('tag-test')));
48$textProcessor->processing($post);
49$manager->persist($post);
50$manager->flush();
51
52$post->setCommentsCount(2);
53
54$this->addReference('post-1', $post);
55
56$post2 = new Post();
57$post2->setTitle('запись про PHP')
58->setUrl(RuTransform::ruTransform('запись про PHP'))
59->setCategory($manager->merge($this->getReference('category-4')))
60->setDescription('метатег description тестовой записи про ПХП')
61->setRawText('<p>PHP (рекурсивный акроним словосочетания PHP: Hypertext Preprocessor) - это распространенный язык программирования общего назначения с открытым исходным кодом. PHP сконструирован специально для ведения Web-разработок и его код может внедряться непосредственно в HTML.</p>')
62->addTag($manager->merge($this->getReference('tag-php')));
63$textProcessor->processing($post2);
64$manager->persist($post2);
65$manager->flush();
66
67$this->addReference('post-2', $post2);
68
69$post3 = new Post();
70$post3->setTitle('ещё о PHP')
71->setUrl(RuTransform::ruTransform('ещё о PHP'))
72->setCategory($manager->merge($this->getReference('category-4')))
73->setDescription('description PHP')
74->setRawText('<p>Ещё одна запись о PHP</p>')
75->addTag($manager->merge($this->getReference('tag-php')));
76$textProcessor->processing($post3);
77$manager->persist($post3);
78$manager->flush();
79
80$this->addReference('post-3', $post3);
81
82$file = $manager->merge($this->getReference('file-1'));
83
84$post4 = new Post();
85$post4->setTitle('JavaScript, хоть и jQuery')
86->setUrl(RuTransform::ruTransform('JavaScript, хоть и jQuery'))
87->setCategory($manager->merge($this->getReference('category-5')))
88->setDescription('description-JavaScript')
89->setRawText('<p>JavaScript - прототипно-ориентированный сценарный язык программирования. Является диалектом языка ECMAScript</p><p>!'
90. $file->getId() . '!</p><!-- cut --><p>Параграф под катом</p>')
91->addTag($manager->merge($this->getReference('tag-javascript')));
92$textProcessor->processing($post4);
93$manager->persist($post4);
94$manager->flush();
95
96$this->addReference('post-4', $post4);
97
98$file->setPost($post4);
99$manager->flush();
100
101$faker = FakerFactory::create('ru_RU');
102$faker->seed(303975);
103
104for ($i = 0; $i < self::COUNT_POSTS; $i++) {
105$title = sprintf('%s %s %s', $faker->word, $faker->word, $faker->word);
106
107$post = new Post();
108$post
109->setTitle($title)
110->setUrl(RuTransform::ruTransform($title))
111->setCategory($manager->merge($this->getReference('category-' . $faker->numberBetween(1, 9))))
112->setDescription($title)
113->setRawText($faker->text($faker->numberBetween(100, 300)))
114;
115$textProcessor->processing($post);
116
117for ($j = 0; $j < $faker->numberBetween(0, 7); $j++) {
118$post->addTag(
119$manager->merge(
120$this->getReference('tag-' . $faker->numberBetween(1, LoadTagData::COUNT_TAGS - 1))
121)
122);
123}
124
125$manager->persist($post);
126$manager->flush();
127
128$this->addReference('post-' . (5 + $i), $post);
129}
130}
131
132/**
133* @return array
134*/
135public function getDependencies()
136{
137return [
138LoadCategoryData::class,
139LoadMediaFileData::class,
140LoadTagData::class,
141];
142}
143}
144