Revize d690b531
Přidáno uživatelem Jakub Vašta před téměř 5 roky(ů)
- ID d690b531b3a891d45fe951145ac31c5079dd0196
- Rodič c236b33a
website/composer.json | ||
---|---|---|
15 | 15 |
"symfony/framework-bundle": "5.0.*", |
16 | 16 |
"symfony/twig-pack": "*", |
17 | 17 |
"symfony/yaml": "5.0.*", |
18 |
"symfony/asset": "*" |
|
18 |
"symfony/asset": "*", |
|
19 |
"symfony/form" : "*" |
|
19 | 20 |
}, |
20 | 21 |
"require-dev": { |
21 | 22 |
"friendsofphp/php-cs-fixer": "^2.16", |
website/src/Controller/HeatmapController.php | ||
---|---|---|
2 | 2 |
|
3 | 3 |
namespace App\Controller; |
4 | 4 |
|
5 |
use App\Entity\DataSet; |
|
6 |
use App\Form\Type\DataSetType; |
|
5 | 7 |
use App\OpenData\IOpenDataManager; |
8 |
use Symfony\Component\HttpFoundation\Request; |
|
6 | 9 |
use Symfony\Component\Routing\Annotation\Route; |
7 | 10 |
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; |
8 | 11 |
|
... | ... | |
10 | 13 |
/** |
11 | 14 |
* @Route("/heatmap", name="heatmap") |
12 | 15 |
*/ |
13 |
public function index() { |
|
14 |
return $this->render('heatmap.html.twig'); |
|
16 |
public function index(Request $request) { |
|
17 |
$dataSet = new DataSet(); |
|
18 |
|
|
19 |
$form = $this->createForm(DataSetType::class, $dataSet); |
|
20 |
$form->handleRequest($request); |
|
21 |
|
|
22 |
// $form->isValid() |
|
23 |
$dataSet = $form->getData(); |
|
24 |
if ($form->isSubmitted()) { |
|
25 |
$dataSet = $form->getData(); |
|
26 |
// Todo do something |
|
27 |
} |
|
28 |
|
|
29 |
return $this->render( |
|
30 |
'heatmap.html.twig', |
|
31 |
[ |
|
32 |
'form' => $form->createView(), |
|
33 |
] |
|
34 |
); |
|
15 | 35 |
} |
16 | 36 |
|
17 | 37 |
/** |
website/src/Entity/DataSet.php | ||
---|---|---|
1 |
<?php |
|
2 |
|
|
3 |
namespace App\Entity; |
|
4 |
|
|
5 |
class DataSet { |
|
6 |
protected $time; |
|
7 |
protected $date; |
|
8 |
protected $type; |
|
9 |
|
|
10 |
public function setTime($time) { |
|
11 |
$this->time = $time; |
|
12 |
} |
|
13 |
|
|
14 |
public function getTime() { |
|
15 |
return $this->time; |
|
16 |
} |
|
17 |
|
|
18 |
public function setDate($date) { |
|
19 |
$this->date = $date; |
|
20 |
} |
|
21 |
|
|
22 |
public function getDate() { |
|
23 |
return $this->date; |
|
24 |
} |
|
25 |
|
|
26 |
public function setType($type) { |
|
27 |
$this->type = $type; |
|
28 |
} |
|
29 |
|
|
30 |
public function getType() { |
|
31 |
return $this->type; |
|
32 |
} |
|
33 |
} |
website/src/Form/DataSetType.php | ||
---|---|---|
1 |
<?php |
|
2 |
|
|
3 |
namespace App\Form\Type; |
|
4 |
|
|
5 |
use App\Entity\DataSet; |
|
6 |
use Symfony\Component\Form\AbstractType; |
|
7 |
use Symfony\Component\Form\FormBuilderInterface; |
|
8 |
use Symfony\Component\OptionsResolver\OptionsResolver; |
|
9 |
use Symfony\Component\Form\Extension\Core\Type\TextType; |
|
10 |
use Symfony\Component\Form\Extension\Core\Type\ChoiceType; |
|
11 |
use Symfony\Component\Form\Extension\Core\Type\SubmitType; |
|
12 |
|
|
13 |
class DataSetType extends AbstractType { |
|
14 |
public function buildForm(FormBuilderInterface $builder, array $options) { |
|
15 |
$builder |
|
16 |
->add('date', TextType::class) |
|
17 |
->add('time', ChoiceType::class, [ |
|
18 |
'choices' => [ |
|
19 |
'0:00-1:00' => 0, |
|
20 |
'1:00-2:00' => 1, |
|
21 |
'2:00-3:00' => 2, |
|
22 |
'3:00-4:00' => 3, |
|
23 |
'4:00-5:00' => 4, |
|
24 |
'5:00-6:00' => 5, |
|
25 |
'6:00-7:00' => 6, |
|
26 |
'7:00-8:00' => 7, |
|
27 |
'8:00-9:00' => 8, |
|
28 |
'9:00-10:00' => 9, |
|
29 |
'10:00-11:00' => 10, |
|
30 |
'11:00-12:00' => 11, |
|
31 |
'12:00-13:00' => 12, |
|
32 |
'13:00-14:00' => 13, |
|
33 |
'14:00-15:00' => 14, |
|
34 |
'15:00-16:00' => 15, |
|
35 |
'16:00-17:00' => 16, |
|
36 |
'17:00-18:00' => 17, |
|
37 |
'18:00-19:00' => 18, |
|
38 |
'19:00-20:00' => 19, |
|
39 |
'20:00-21:00' => 20, |
|
40 |
'21:00-22:00' => 21, |
|
41 |
'22:00-23:00' => 22, |
|
42 |
'23:00-0:00' => 23, |
|
43 |
], |
|
44 |
]) |
|
45 |
->add('type', ChoiceType::class, [ |
|
46 |
'choices' => [ |
|
47 |
'Wi-Fi a drátové připojení' => 0, |
|
48 |
'JIS snímače' => 1, |
|
49 |
'Koloběžky' => 2, |
|
50 |
], |
|
51 |
]) |
|
52 |
->add('submit', SubmitType::class); |
|
53 |
} |
|
54 |
|
|
55 |
public function configureOptions(OptionsResolver $resolver) { |
|
56 |
$resolver->setDefaults([ |
|
57 |
'data_class' => DataSet::class, |
|
58 |
]); |
|
59 |
} |
|
60 |
} |
website/templates/heatmap.html.twig | ||
---|---|---|
21 | 21 |
</button> |
22 | 22 |
|
23 | 23 |
<div class="collapse navbar-collapse" id="navigation"> |
24 |
<form method="get"> |
|
24 |
|
|
25 |
{{ form_start(form) }} |
|
26 |
|
|
25 | 27 |
<ul class="navbar-nav"> |
26 | 28 |
<li class="nav-item"> |
27 |
<label for="date">Vyberte datum</label> |
|
28 |
<input type="date" name="date" id="date" class="form-control" required> |
|
29 |
{{ form_label(form.date, 'Vyberte datum') }} |
|
30 |
{{ |
|
31 |
form_widget(form.date, |
|
32 |
{ |
|
33 |
'type' : 'date', |
|
34 |
'attr' : { |
|
35 |
'class' : 'form-control' |
|
36 |
} |
|
37 |
}) |
|
38 |
}} |
|
29 | 39 |
</li> |
30 | 40 |
|
31 | 41 |
<li class="nav-item"> |
32 |
<label for="hour">Vyberte čas</label> |
|
33 |
<select name="hour" id="hour" class="custom-select"> |
|
34 |
<option value="0">0:00–1:00</option> |
|
35 |
<option value="1">1:00–2:00</option> |
|
36 |
<option value="2">2:00–3:00</option> |
|
37 |
<option value="3">3:00–4:00</option> |
|
38 |
<option value="4">4:00–5:00</option> |
|
39 |
<option value="5">5:00–6:00</option> |
|
40 |
<option value="6">6:00–7:00</option> |
|
41 |
<option value="7">7:00–8:00</option> |
|
42 |
<option value="8">8:00–9:00</option> |
|
43 |
<option value="9">9:00–10:00</option> |
|
44 |
<option value="10">10:00–11:00</option> |
|
45 |
<option value="11">11:00–12:00</option> |
|
46 |
<option value="12">12:00–13:00</option> |
|
47 |
<option value="13">13:00–14:00</option> |
|
48 |
<option value="14">14:00–15:00</option> |
|
49 |
<option value="15">15:00–16:00</option> |
|
50 |
<option value="16">16:00–17:00</option> |
|
51 |
<option value="17">17:00–18:00</option> |
|
52 |
<option value="18">18:00–19:00</option> |
|
53 |
<option value="19">19:00–20:00</option> |
|
54 |
<option value="20">20:00–21:00</option> |
|
55 |
<option value="21">21:00–22:00</option> |
|
56 |
<option value="22">22:00–23:00</option> |
|
57 |
<option value="23">23:00–0:00</option> |
|
58 |
</select> |
|
42 |
{{ form_label(form.date, 'Vyberte čas') }} |
|
43 |
{{ |
|
44 |
form_widget(form.time, { |
|
45 |
'attr' : { |
|
46 |
'class' : "custom-select" |
|
47 |
} |
|
48 |
}) |
|
49 |
}} |
|
59 | 50 |
</li> |
60 | 51 |
|
61 | 52 |
<li class="nav-item"> |
62 |
<label for="dataset">Vybrané datové sady</label> |
|
63 |
<select name="dataset" id="dataset" class="custom-select"> |
|
64 |
<option value="internet">Wi-Fi a drátové připojení</option> |
|
65 |
<option value="jis">JIS snímače</option> |
|
66 |
<option value="scoobikes">koloběžky</option> |
|
67 |
</select> |
|
53 |
{{ form_label(form.date, 'Vybrané datové sady') }} |
|
54 |
{{ |
|
55 |
form_widget(form.type, { |
|
56 |
'attr' : { |
|
57 |
'class' : "custom-select" |
|
58 |
} |
|
59 |
}) |
|
60 |
}} |
|
68 | 61 |
</li> |
69 | 62 |
|
70 | 63 |
<li class="nav-item"> |
71 |
<button class="btn btn-secondary" type="submit"> |
|
72 |
Potvrdit výběr |
|
73 |
</button> |
|
64 |
{{ |
|
65 |
form_widget(form.submit, |
|
66 |
{ |
|
67 |
'label' : 'Potvrdit výběr', |
|
68 |
'type' : 'submit', |
|
69 |
'attr' : { |
|
70 |
'class': 'btn btn-secondary' |
|
71 |
} |
|
72 |
}) |
|
73 |
}} |
|
74 | 74 |
</li> |
75 | 75 |
|
76 | 76 |
<li class="nav-item button"> |
77 | 77 |
<h2> |
78 | 78 |
<a href="{{ path('home') }}" class="nav-link">O projektu</a> |
79 | 79 |
</h2> |
80 |
</li> |
|
81 |
</ul> |
|
82 |
</form> |
|
80 |
</li> |
|
81 |
</ul> |
|
82 |
|
|
83 |
{{ form_end(form) }} |
|
84 |
|
|
83 | 85 |
</div> |
84 | 86 |
|
85 | 87 |
<a href="{{ path('home') }}" class="navbar-button"> |
Také k dispozici: Unified diff
Re #7933
+ základní funkcionalita formulářů v aplikaci - viz. Symfony forms