<?php
namespace Drupal\kazan_dizajner\Form;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
class KazaniForm extends FormBase {
protected $cena;
public function getFormId(): string
{
return 'kazani_form';
}
public function buildForm(array $form, FormStateInterface $form_state): array
{
$form['kazani_tipovi'] = [
'#type' => 'radios',
'#title' => '1. Izaberite model kazana koji želite da kreirate:',
'#options' => [
'prevrtac' => 'Kazani prevrtači',
'praktik' => 'Kazani praktik',
'profesionalni' => 'Kazani profesionalni',
],
];
$form['kazani_prevrtaci_zapremina'] = [
'#type' => 'radios',
'#title' => '2. Izaberite zapreminu kotla:',
'#options' => [
'_prevrtac_40_litara' => '40 litara',
'_prevrtac_60_litara' => '60 litara',
'_prevrtac_80_litara' => '80 litara',
'_prevrtac_100_litara' => '100 litara'
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => ['value' => 'prevrtac']
]
],
//TODO: Ne rade conditional fieldovi kada radi ajax
// '#ajax' => [
// 'callback' => '::myAjaxCallback',
// 'wrapper' => 'edit-output',
// 'progress' => [
// 'type' => 'throbber',
// 'message' => $this->t('Verifying entry...'),
// ],
// ]
];
$form['kazani_prevrtaci_debljina_dna'] = [
'#type' => 'radios',
'#title' => 'Izaberite debljinu dna kotla:',
'#options' => [
'_prevrtac_1_5_mm' => 'Dno kotla - 1.5 mm',
'_prevrtac_2_mm' => 'Dno kotla - 2 mm',
'_prevrtac_3_mmm' => 'Dno kotla - 3 mm',
'_prevrtac_4_mm' => 'Dno kotla - 4 mm'
],
'#states' => [
'visible' => [
'input[name="kazani_prevrtaci_zapremina"]' => [
['value' => '_prevrtac_40_litara'],
['value' => '_prevrtac_60_litara'],
['value' => '_prevrtac_80_litara'],
['value' => '_prevrtac_100_litara'],
],
['input[name="kazani_tipovi"]' => ['value' => 'prevrtac']]
]
]
];
$form['kazani_prevrtaci_cev'] = [
'#type' => 'radios',
'#title' => '3. Izaberite željenu dužinu i prečnik cevi/lule:',
'#options' => [
'_prevrtac_fi28x1500mm' => 'Cev/lula - fi 28x1500 mm (STANDARD)',
'_prevrtac_fi28x2000mm' => 'Cev/lula - fi 28x2000 mm',
'_prevrtac_fi28x2500mm' => 'Cev/lula - fi 28x2500 mm',
'_prevrtac_fi28x3000mm' => 'Cev/lula - fi 28x3000 mm',
'_prevrtac_fi28x3500mm' => 'Cev/lula - fi 28x3500 mm',
'_prevrtac_fi28x4000mm' => 'Cev/lula - fi 28x4000 mm',
'_prevrtac_fi40x2000mm' => 'Cev/lula - fi 40x2000 mm',
'_prevrtac_fi40x2500mm' => 'Cev/lula - fi 40x2500 mm',
'_prevrtac_fi40x3000mm' => 'Cev/lula - fi 40x3000 mm',
'_prevrtac_fi40x3500mm' => 'Cev/lula - fi 40x3500 mm',
'_prevrtac_fi40x4000mm' => 'Cev/lula - fi 40x4000 mm',
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => ['value' => 'prevrtac']
],
]
];
$form['kazani_prevrtaci_hladnjak'] = [
'#type' => 'radios',
'#title' => '4. Izaberite zapreminu i model hladnjaka:',
'#options' => [
'_prevrtac_pocinkovani_od_330_litara' => 'Pocinkovani hladnjak od 330 litara (STANDARD)',
'_praktik_prohromski_od_330_litara' => 'Prohromski hladnjak od 330 litara',
'_prevrtac_pocinkovani_od_470_litara' => 'Pocinkovani hladnjak od 470 litara',
'_prevrtac_prohromski_od_470_litara' => 'Prohromski hladnjak od 470 litara'
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => [
['value' => 'prevrtac'],
]
],
]
];
$form['hladnjak_prevrtaci_izmenjivac'] = [
'#type' => 'radios',
'#title' => 'Izmenjivač toplote u hladnjaku',
'#options' => [
'_prevrtac_spirala_5_navoja' => 'Spirala 5 navoja (STANDARD)',
'_prevrtac_cilindar_kiler' => 'Doplata za cilindar/kiler'
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => [
['value' => 'prevrtac'],
]
],
]
];
$form['kazani_prevrtaci_mesalica'] = [
'#type' => 'radios',
'#title' => '5. Izaberite jednu od varijanti mešalice:',
'#options' => [
'_prevrtac_rucna' => 'Ručna mešalica (STANDARD)',
'_prevrtac_elektricna' => 'Električna mešalica'
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => [
['value' => 'prevrtac'],
]
],
]
];
$form['dodatna_prevrtaci_oprema'] = [
'#type' => 'checkboxes',
'#title' => '6. Izaberite potrebnu dodatnu opremu:',
'#options' => [
'_prevrtac_alkoholmetar' => 'Alkoholmetar',
'_prevrtac_sirometar' => 'Sirometar',
'_prevrtac_plamenik' => 'Plamenik',
'_prevrtac_levak' => 'Levak',
'_prevrtac_menzura' => 'Menzura',
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => [
['value' => 'prevrtac'],
]
],
]
];
// Kazani praktik.
$form['kazani_praktik_zapremina'] = [
'#type' => 'radios',
'#title' => '2. Izaberite zapreminu kotla:',
'#options' => [
'_praktik_60_litara' => '60 litara',
'_praktik_80_litara' => '80 litara',
'_praktik_100_litara' => '100 litara'
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => ['value' => 'praktik']
]
]
];
$form['kazani_praktik_debljina_dna'] = [
'#type' => 'radios',
'#title' => 'Izaberite debljinu dna kotla:',
'#options' => [
'_praktik_1_5_mm' => 'Dno kotla - 1.5 mm',
'_praktik_2_mm' => 'Dno kotla - 2 mm',
'_praktik_3_mmm' => 'Dno kotla - 3 mm',
'_praktik_4_mm' => 'Dno kotla - 4 mm'
],
'#states' => [
'visible' => [
':input[name="kazani_praktik_zapremina"]' => [
['value' => '_praktik_60_litara'],
['value' => '_praktik_80_litara'],
['value' => '_praktik_100_litara']
],
[':input[name="kazani_tipovi"]' => ['value' => 'praktik']]
]
]
];
$form['kazani_praktik_cev'] = [
'#type' => 'radios',
'#title' => '3. Izaberite željenu dužinu i prečnik cevi/lule:',
'#options' => [
'_praktik_fi40x2000mm' => 'Cev/lula - fi 40x2000 mm (STANDARD)',
'_praktik_fi40x2500mm' => 'Cev/lula - fi 40x2500 mm',
'_praktik_fi40x3000mm' => 'Cev/lula - fi 40x3000 mm',
'_praktik_fi40x3500mm' => 'Cev/lula - fi 40x3500 mm',
'_praktik_fi40x4000mm' => 'Cev/lula - fi 40x4000 mm',
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => ['value' => 'praktik']
],
]
];
$form['kazani_praktik_hladnjak'] = [
'#type' => 'radios',
'#title' => '4. Izaberite zapreminu i model hladnjaka:',
'#options' => [
'_praktik_pocinkovani_od_330_litara' => 'Pocinkovani hladnjak od 330 litara (STANDARD)',
'_praktik_prohromski_od_330_litara' => 'Prohromski hladnjak od 330 litara',
'_praktik_pocinkovani_od_470_litara' => 'Pocinkovani hladnjak od 470 litara',
'_praktik_prohromski_od_470_litara' => 'Prohromski hladnjak od 470 litara'
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => [
['value' => 'praktik'],
]
],
]
];
$form['hladnjak_praktik_izmenjivac'] = [
'#type' => 'radios',
'#title' => 'Izmenjivač toplote u hladnjaku',
'#options' => [
'_praktik_spirala_5_navoja' => 'Spirala 5 navoja (STANDARD)',
'_praktik_cilindar_kiler' => 'Doplata za cilindar/kiler'
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => [
['value' => 'praktik'],
]
],
]
];
$form['kazani_praktik_mesalica'] = [
'#type' => 'radios',
'#title' => '5. Izaberite jednu od varijanti mešalice:',
'#options' => [
'_praktik_rucna' => 'Ručna mešalica (STANDARD)',
'_praktik_elektricna' => 'Električna mešalica'
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => [
['value' => 'praktik'],
]
],
]
];
$form['dodatna_praktik_oprema'] = [
'#type' => 'checkboxes',
'#title' => '6. Izaberite potrebnu dodatnu opremu:',
'#options' => [
'_praktik_alkoholmetar' => 'Alkoholmetar',
'_praktik_sirometar' => 'Sirometar',
'_praktik_plamenik' => 'Plamenik',
'_praktik_levak' => 'Levak',
'_praktik_menzura' => 'Menzura',
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => [
['value' => 'praktik'],
]
],
]
];
// Kazani profesionalni.
$form['kazani_profesionalni_zapremina'] = [
'#type' => 'radios',
'#title' => '2. Izaberite zapreminu kotla:',
'#options' => [
'_profi_80_litara' => '80 litara',
'_profi_100_litara' => '100 litara',
'_profi_120_litara' => '120 litara',
'_profi_160_litara' => '160 litara',
'_profi_200_litara' => '200 litara',
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => ['value' => 'profesionalni']
]
]
];
$form['kazani_profesionalni_debljina_dna'] = [
'#type' => 'radios',
'#title' => 'Izaberite debljinu dna kotla:',
'#options' => [
'_profi_1_5_mm' => 'Dno kotla - 1.5 mm (STANDARD)',
'_profi_2_mm' => 'Dno kotla - 2 mm',
'_profi_3_mmm' => 'Dno kotla - 3 mm',
'_profi_4_mm' => 'Dno kotla - 4 mm',
'_profi_5_mm' => 'Dno kotla - 5 mm',
],
'#states' => [
'visible' => [
':input[name="kazani_profesionalni_zapremina"]' => [
['value' => '_profi_80_litara'],
['value' => '_profi_100_litara'],
['value' => '_profi_120_litara'],
['value' => '_profi_160_litara'],
['value' => '_profi_200_litara'],
],
[':input[name="kazani_tipovi"]' => ['value' => 'profesionalni']]
],
]
];
$form['kazani_profesionalni_cev'] = [
'#type' => 'radios',
'#title' => '3. Izaberite željenu dužinu i prečnik cevi/lule:',
'#options' => [
'_profi_fi40x2000mm' => 'Cev/lula - fi 40x2000 mm (STANDARD)',
'_profi_fi40x2500mm' => 'Cev/lula - fi 40x2500 mm',
'_profi_fi40x3000mm' => 'Cev/lula - fi 40x3000 mm',
'_profi_fi40x3500mm' => 'Cev/lula - fi 40x3500 mm',
'_profi_fi40x4000mm' => 'Cev/lula - fi 40x4000 mm',
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => ['value' => 'profesionalni']
],
]
];
$form['kazani_profesionalni_hladnjak'] = [
'#type' => 'radios',
'#title' => '4. Izaberite zapreminu i model hladnjaka:',
'#options' => [
'_profi_pocinkovani_od_330_litara' => 'Pocinkovani hladnjak od 330 litara (STANDARD)',
'_profi_prohromski_od_330_litara' => 'Prohromski hladnjak od 330 litara',
'_profi_pocinkovani_od_470_litara' => 'Pocinkovani hladnjak od 470 litara',
'_profi_prohromski_od_470_litara' => 'Prohromski hladnjak od 470 litara'
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => [
['value' => 'profesionalni']
]
],
]
];
$form['hladnjak_profesionalni_izmenjivac'] = [
'#type' => 'radios',
'#title' => 'Izmenjivač toplote u hladnjaku',
'#options' => [
'_profi_spirala_5_navoja' => 'Spirala 5 navoja (STANDARD)',
'_profi_cilindar_kiler' => 'Doplata za cilindar/kiler'
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => [
['value' => 'profesionalni']
]
],
]
];
$form['kazani_profesionalni_mesalica'] = [
'#type' => 'radios',
'#title' => '5. Izaberite jednu od varijanti mešalice:',
'#options' => [
'_profi_rucna' => 'Ručna mešalica (STANDARD)',
'_profi_elektricna' => 'Električna mešalica'
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => [
['value' => 'profesionalni']
]
],
]
];
$form['dodatna_profesionalni_oprema'] = [
'#type' => 'checkboxes',
'#title' => '6. Izaberite potrebnu dodatnu opremu:',
'#options' => [
'_profi_alkoholmetar' => 'Alkoholmetar',
'_profi_sirometar' => 'Sirometar',
'_profi_plamenik' => 'Plamenik',
'_profi_levak' => 'Levak',
'_profi_menzura' => 'Menzura',
],
'#states' => [
'visible' => [
'input[name="kazani_tipovi"]' => [
['value' => 'profesionalni']
]
],
]
];
$form['izracunaj_cenu'] = [
'#type' => 'button',
'#value' => 'Izracunaj cenu',
'#ajax' => [
'callback' => '::cene',
'wrapper' => 'edit-output',
'progress' => [
'type' => 'throbber',
'message' => $this->t('Verifying entry...'),
]
]
];
// Order price.
$form['cena'] = [
'#type' => 'label',
'#attributes' => ['id' => 'edit-output'],
'#title' => 'Cena',
];
// User information.
$form['emailaddress'] = [
'#type' => 'email',
'#title' => 'E-mail (dobićete kopiju gore kreiranog kazana)*'
];
$form['phone'] = [
'#type' => 'tel',
'#title' => 'Broj telefona*'
];
$form['message'] = [
'#type' => 'textarea',
'#title' => 'Poruka*'
];
$form['actions']['#type'] = 'actions';
$form['actions']['submit'] = [
'#type' => 'submit',
'#value' => $this->t('Save'),
'#button_type' => 'primary'
];
return $form;
}
public static function cene(array &$form, FormStateInterface $form_state) {
$config = \Drupal::config('kazan_dizajner.settings');
$cena = '';
$oprema_cena = '';
// Fetching users input for acquiring each item price.
if ($form_state->getUserInput()['kazani_tipovi'] == 'prevrtac') {
$zapremina = $form_state->getUserInput()['kazani_prevrtaci_zapremina'];
($zapremina) ? $form_state->getUserInput()['kazani_prevrtaci_zapremina'] : '';
$dno = $form_state->getUserInput()['kazani_prevrtaci_debljina_dna'];
($dno) ? $form_state->getUserInput()['kazani_prevrtaci_debljina_dna'] : '';
$cev = $form_state->getUserInput()['kazani_prevrtaci_cev'];
($cev) ? $form_state->getUserInput()['kazani_prevrtaci_cev'] : '';
$hladnjak = $form_state->getUserInput()['kazani_prevrtaci_hladnjak'];
($hladnjak) ? $form_state->getUserInput()['kazani_prevrtaci_hladnjak'] : '';
$izmenjivac = $form_state->getUserInput()['hladnjak_prevrtaci_izmenjivac'];
($izmenjivac) ? $form_state->getUserInput()['hladnjak_prevrtaci_izmenjivac'] : '';
$mesalica = $form_state->getUserInput()['kazani_prevrtaci_mesalica'];
($mesalica) ? $form_state->getUserInput()['kazani_prevrtaci_mesalica'] : '';
$dodaci = $form_state->getUserInput()['dodatna_prevrtaci_oprema'];
foreach ($dodaci as $dodatak) {
if ($dodatak != NULL) {
$oprema_cena += $config->get($dodatak);
}
}
} else if ($form_state->getUserInput()['kazani_tipovi'] == 'praktik') {
$zapremina = $form_state->getUserInput()['kazani_praktik_zapremina'];
($zapremina) ? $form_state->getUserInput()['kazani_prevrtaci_zapremina'] : '';
$dno = $form_state->getUserInput()['kazani_praktik_debljina_dna'];
($dno) ? $form_state->getUserInput()['kazani_praktik_debljina_dna'] : '';
$cev = $form_state->getUserInput()['kazani_praktik_cev'];
($cev) ? $form_state->getUserInput()['kazani_praktik_cev'] : '';
$hladnjak = $form_state->getUserInput()['kazani_praktik_hladnjak'];
($hladnjak) ? $form_state->getUserInput()['kazani_praktik_hladnjak'] : '';
$izmenjivac = $form_state->getUserInput()['hladnjak_praktik_izmenjivac'];
($izmenjivac) ? $form_state->getUserInput()['hladnjak_praktik_izmenjivac'] : '';
$mesalica = $form_state->getUserInput()['kazani_praktik_mesalica'];
($mesalica) ? $form_state->getUserInput()['kazani_praktik_mesalica'] : '';
$dodaci = $form_state->getUserInput()['dodatna_praktik_oprema'];
foreach ($dodaci as $dodatak) {
if ($dodatak != NULL) {
$oprema_cena += $config->get($dodatak);
}
}
} else {
$zapremina = $form_state->getUserInput()['kazani_profesionalni_zapremina'];
($zapremina) ? $form_state->getUserInput()['kazani_profesionalni_zapremina'] : '';
$dno = $form_state->getUserInput()['kazani_profesionalni_debljina_dna'];
($dno) ? $form_state->getUserInput()['kazani_profesionalni_debljina_dna'] : '';
$cev = $form_state->getUserInput()['kazani_profesionalni_cev'];
($cev) ? $form_state->getUserInput()['kazani_profesionalni_cev'] : '';
$hladnjak = $form_state->getUserInput()['kazani_profesionalni_hladnjak'];
($hladnjak) ? $form_state->getUserInput()['kazani_profesionalni_hladnjak'] : '';
$izmenjivac = $form_state->getUserInput()['hladnjak_profesionalni_izmenjivac'];
($izmenjivac) ? $form_state->getUserInput()['hladnjak_profesionalni_izmenjivac'] : '';
$mesalica = $form_state->getUserInput()['kazani_profesionalni_mesalica'];
($mesalica) ? $form_state->getUserInput()['kazani_profesionalni_mesalica'] : '';
$dodaci = $form_state->getUserInput()['dodatna_profesionalni_oprema'];
foreach ($dodaci as $dodatak) {
if ($dodatak != NULL) {
$oprema_cena += $config->get($dodatak);
}
}
}
//Calculating total order price.
$artikli = [];
array_push($artikli, $zapremina, $dno, $cev, $hladnjak, $izmenjivac, $mesalica);
foreach($artikli as $artikal) {
if ($artikal != NULL) {
$cena += $config->get($artikal);
}
}
$cena += $oprema_cena;
$form['cena']['#title'] = 'Cena ovog kazana bi iznosila ' . $cena . ' RSD.';
return $form['cena'];
}
public function submitForm(array &$form, FormStateInterface $form_state)
{
if ($form_state->getValue)
$message =
'Specifikacija kazana' . PHP_EOL . PHP_EOL
. 'Email: ' . $form_state->getValue('emailaddress') . PHP_EOL
. 'Telefon: ' . $form_state->getValue('phone') . PHP_EOL
. 'Poruka: ' . $form_state->getValue('message') . PHP_EOL
. 'Tip: ' . $form_state->getValue('kazani_tipovi') . PHP_EOL
. 'Zapremina: ' . $form_state->getValue('');
$mailManager = \Drupal::service('plugin.manager.mail');
$module = 'kazan_dizajner';
$key = 'mail_order';
$to = $form_state->getValue('emailaddress');
dsm($form_state->getValue('kazani_tipovi'));
}
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter