Projekt

Obecné

Profil

« Předchozí | Další » 

Revize d690b531

Přidáno uživatelem Jakub Vašta před asi 4 roky(ů)

  • ID d690b531b3a891d45fe951145ac31c5079dd0196
  • Rodič c236b33a

Re #7933
+ základní funkcionalita formulářů v aplikaci - viz. Symfony forms

Zobrazit rozdíly:

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&ndash;1:00</option>
35
                <option value="1">1:00&ndash;2:00</option>
36
                <option value="2">2:00&ndash;3:00</option>
37
                <option value="3">3:00&ndash;4:00</option>
38
                <option value="4">4:00&ndash;5:00</option>
39
                <option value="5">5:00&ndash;6:00</option>
40
                <option value="6">6:00&ndash;7:00</option>
41
                <option value="7">7:00&ndash;8:00</option>
42
                <option value="8">8:00&ndash;9:00</option>
43
                <option value="9">9:00&ndash;10:00</option>
44
                <option value="10">10:00&ndash;11:00</option>
45
                <option value="11">11:00&ndash;12:00</option>
46
                <option value="12">12:00&ndash;13:00</option>
47
                <option value="13">13:00&ndash;14:00</option>
48
                <option value="14">14:00&ndash;15:00</option>
49
                <option value="15">15:00&ndash;16:00</option>
50
                <option value="16">16:00&ndash;17:00</option>
51
                <option value="17">17:00&ndash;18:00</option>
52
                <option value="18">18:00&ndash;19:00</option>
53
                <option value="19">19:00&ndash;20:00</option>
54
                <option value="20">20:00&ndash;21:00</option>
55
                <option value="21">21:00&ndash;22:00</option>
56
                <option value="22">22:00&ndash;23:00</option>
57
                <option value="23">23:00&ndash;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&nbsp;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