Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 168d1b4f

Přidáno uživatelem Filip Jani před asi 6 roky(ů)

Re #7330 ošetření formuláře a úprava required polí

Zobrazit rozdíly:

app/AdminModule/component/User/UserEditForm.latte
1 1
<div class="row">
2 2
    <div class="col-4">
3
        {form form class=> 'form'}
4
            <div class="alert alert-danger" n:if="$form->hasErrors()">
5
                <ul class="ul-alert">
6
                    <li n:foreach="$form->errors as $error">{$error}</li>
7
                </ul>
8
            </div>
9

  
10
            <div class="row mt-2">
11
                <div class="col-4">
12
                    {label \App\Model\Repository\UserRepository::COLUMN_USERNAME}
13
                </div>
14
                <div class="col-8">
15
                    {input \App\Model\Repository\UserRepository::COLUMN_USERNAME class => 'form-control'}
16
                </div>
17
            </div>
18
            <div class="row mt-2">
19
                <div class="col-4">
20
                    {label \App\Model\Repository\UserRepository::COLUMN_LOGIN}
21
                </div>
22
                <div class="col-8">
23
                    {input \App\Model\Repository\UserRepository::COLUMN_LOGIN class => 'form-control'}
24
                </div>
25
            </div>
26
            <div class="row mt-2">
27
                <div class="col-4">
28
                    {label \App\Model\Repository\UserRepository::COLUMN_PASSWORD}
29
                </div>
30
                <div class="col-8">
31
                    {input \App\Model\Repository\UserRepository::COLUMN_PASSWORD class => 'form-control'}
32
                </div>
33
            </div>
34
            <div class="row mt-2">
35
                <div class="col-4">
36
                    {label \App\AdminModule\Components\UserEditForm::PASSWORD_CONFIRM}
37
                </div>
38
                <div class="col-8">
39
                    {input \App\AdminModule\Components\UserEditForm::PASSWORD_CONFIRM class => 'form-control'}
40
                </div>
41
            </div>
42
            <div class="row mt-2">
43
                <div class="col-4">
44
                    {label \App\Model\Repository\UserRoleRepository::COLUMN_ROLE_ID}
45
                </div>
46
                <div class="col-8">
47
                    {input \App\Model\Repository\UserRoleRepository::COLUMN_ROLE_ID class => 'form-control'}
48
                </div>
49
            </div>
50
            <div class="row mt-2">
51
                <div class="col-4">
52
                    {label \App\Model\Repository\UserRepository::COLUMN_EMAIL}
53
                </div>
54
                <div class="col-8">
55
                    {input \App\Model\Repository\UserRepository::COLUMN_EMAIL class => 'form-control'}
56
                </div>
57
            </div>
58

  
59
            <div class="row">
60
                <div class="col-8 offset-4">
61
                    {input submit class => 'form-control btn btn-success mt-4'}
62
                </div>
63
            </div>
64
        {/form}
3
        {control form}
65 4
    </div>
66 5
</div>
app/AdminModule/component/User/UserEditForm.php
10 10
use App\Model\Repository\UserRepository;
11 11
use App\Model\Repository\UserRoleRepository;
12 12
use Nette\Application\UI\Control;
13
use Nette\Application\UI\Form;
13
use App\Utils\Form;
14 14

  
15 15
class UserEditForm extends Control
16 16
{
......
70 70

  
71 71
        $password = $this->form->addPassword(UserRepository::COLUMN_PASSWORD, 'Heslo');
72 72
        $passwordConfirm = $this->form->addPassword(self::PASSWORD_CONFIRM, 'Potvrzení hesla')
73
            ->addRule(Form::EQUAL, 'Hesla se musejí shodovat.', $this->form[UserRepository::COLUMN_PASSWORD]);
73
            ->addConditionOn($password, Form::FILLED, TRUE)
74
            ->addRule(Form::EQUAL, 'Hesla se musejí shodovat.', $password)
75
            ->addRule(Form::REQUIRED, 'Pole %label je povinné')
76
            ->endCondition();
74 77

  
75 78
        if (empty($this->userId))
76 79
        {
77
            $password->setRequired(TRUE);
78
            $passwordConfirm->setRequired(TRUE);
79
        } else
80
        {
81
            $password->setRequired(FALSE);
82
            $passwordConfirm->setRequired(FALSE);
80
            $password->addRule(Form::REQUIRED, 'Pole %label je povinné', TRUE);
81
            $passwordConfirm->addRule(Form::REQUIRED, 'Pole %label je povinné');
83 82
        }
84 83

  
85 84
        $this->form->addSelect(UserRoleRepository::COLUMN_ROLE_ID, 'Role uživatele', $this->getRoles())
app/FrontModule/component/Login/LoginForm.latte
1 1
<div class="row">
2 2
    <div class="col-3">
3
        {form form class => 'form'}
4
            {label \App\Model\Repository\UserRepository::COLUMN_LOGIN}
5
            {input \App\Model\Repository\UserRepository::COLUMN_LOGIN class => 'form-control'}
6

  
7
            {label \App\Model\Repository\UserRepository::COLUMN_PASSWORD}
8
            {input \App\Model\Repository\UserRepository::COLUMN_PASSWORD class => 'form-control'}
9

  
10
            {input submit class => 'form-control btn btn-success mt-4'}
11
        {/form}
3
        {control form}
12 4
    </div>
13 5
</div>
app/FrontModule/component/Login/LoginForm.php
6 6

  
7 7
use App\Enum\EFlashMessage;
8 8
use App\Model\Repository\UserRepository;
9
use App\Utils\Form;
9 10
use Nette\Application\UI\Control;
10
use Nette\Application\UI\Form;
11 11
use Nette\Security\AuthenticationException;
12 12

  
13 13
class LoginForm extends Control
......
22 22
    {
23 23
        $form = new Form;
24 24

  
25
        $form->addText(UserRepository::COLUMN_LOGIN, 'Login');
26
        $form->addPassword(UserRepository::COLUMN_PASSWORD, 'Password');
25
        $form->addText(UserRepository::COLUMN_LOGIN, 'Login')
26
            ->setRequired('Pole %label je povinné.');
27
        $form->addPassword(UserRepository::COLUMN_PASSWORD, 'Password')
28
            ->setRequired('Pole %label je povinné.');;
27 29

  
28 30
        $form->addSubmit('submit', 'Login');
29 31

  
app/utils/Form.php
1
<?php
2

  
3

  
4
namespace App\Utils;
5

  
6

  
7
/**
8
 * Slouží k vytváření formulářů s bootstrapovým vzhledem
9
 *
10
 * @package App\Utils
11
 */
12
class Form extends \Nette\Application\UI\Form
13
{
14
    public function __construct($name = null)
15
    {
16
        parent::__construct($name);
17

  
18
        $renderer = $this->getRenderer();
19
        $renderer->wrappers['controls']['container'] = null;
20
        $renderer->wrappers['pair']['container'] = 'div class="row mt-2"';
21
        $renderer->wrappers['pair']['.error'] = 'has-error';
22
        $renderer->wrappers['control']['container'] = 'div class=col-8';
23
        $renderer->wrappers['label']['container'] = 'div class="col-4 control-label"';
24
        $renderer->wrappers['control']['description'] = 'span class=help-block';
25
        $renderer->wrappers['error']['container'] = 'div class="alert alert-danger"';
26
        $this->getElementPrototype()->class('form-horizontal');
27

  
28
    }
29

  
30
    public function addText($name, $label = null, $cols = null, $maxLength = null)
31
    {
32
        return parent::addText($name, $label, $cols, $maxLength)->setHtmlAttribute('class', 'form-control');
33
    }
34

  
35
    public function addSelect($name, $label = null, array $items = null, $size = null)
36
    {
37
        return parent::addSelect($name, $label, $items, $size)->setHtmlAttribute('class', 'form-control');
38
    }
39

  
40
    public function addPassword($name, $label = null, $cols = null, $maxLength = null)
41
    {
42
        return parent::addPassword($name, $label, $cols, $maxLength)->setHtmlAttribute('class', 'form-control');
43
    }
44

  
45
    public function addEmail($name, $label = null)
46
    {
47
        return parent::addEmail($name, $label)->setHtmlAttribute('class', 'form-control');
48
    }
49

  
50
    public function addTextArea($name, $label = null, $cols = null, $rows = null)
51
    {
52
        return parent::addTextArea($name, $label, $cols, $rows)->setHtmlAttribute('class', 'form-control');
53
    }
54

  
55
    public function addUpload($name, $label = null, $multiple = false)
56
    {
57
        return parent::addUpload($name, $label, $multiple)->setHtmlAttribute('class', 'form-control');
58
    }
59

  
60
    protected function beforeRender()
61
    {
62
        parent::beforeRender();
63

  
64
        foreach ($this->getControls() as $control)
65
        {
66
            $type = $control->getOption('type');
67
            if ($type === 'button')
68
            {
69
                $control->getControlPrototype()->addClass('btn btn-success form-control');
70
            }
71
        }
72
    }
73
}
www/css/admin/style.css
110 110

  
111 111
.ul-alert{
112 112
    margin-bottom: 0;
113
}
114

  
115
.required{
116
    font-weight: bold;
113 117
}
www/css/front/style.css
58 58
.navbar.navbar-expand-lg {
59 59
    padding-top: 0;
60 60
    padding-bottom: 0;
61
}
62

  
63
.required{
64
    font-weight: bold;
61 65
}

Také k dispozici: Unified diff