Získání dat z konfigurátoru
- jAkErCZ
- Člen | 322
Zdravím,
mám konfigurátor který funguje na ajaxu a tahám si data z db vše se
krásně vypisuje ale teď nastal takový problém na konci mám shrnutí které
mi načítá js a chtěl bych aby po kliknutí na objednat vyskočilo modální
okno kde uživatel vypíše jméno,mail a telefon a dá odeslat a mě na mail
přijde výpis této objednávky.
ale za boha nevím jak vytáhnout ty data z té stránky kde to je shrnuté..
Snad mě chápete…
<li data-selection="summary" class="builder-step first-load">
<section class="cd-step-content">
<header>
<h1>Summary</h1>
<span class="steps-indicator">Step <b>4</b> of 4</span>
</header>
<ul class="summary-list">
<li>
<h2>Model</h2>
<img n:for="$i = 0; $i < $product->images_count; $i++"
src="{$basePath}/configurator/products/{$product->configure_id}/{$product->configure_id}_{$i}.jpg"
alt="{$product->title}" class="finish-img">
<h3>{$product->title}</h3>
<p>
{$product->short_description|striptags}
</p>
</li>
<li data-summary="colors">
<h2>Barva</h2>
<span class="summary-color">
<em class="color-swatch" data-color="red"></em>
<em class="color-label">Red Passion</em>
</span>
</li>
<li data-summary="accessories">
<h2>Příslušenství</h2>
<ul class="summary-accessories">
<li>
<p>Uconnect 6.5" colour touchscreen radio navigation sytem with Bluetooth & DAB ($1050)</p>
</li>
<li>
<p>Audio & telephone controls on steering wheels ($750)</p>
</li>
</ul>
</li>
</ul>
</section>
</li>
To shrnutí si nějak dle vaší volby tahá nebo drží js…
Díky všem za pomoc či radu :)
- Oli
- Člen | 1215
Ono je uplně jedno jestli to je přes ajax nebo jen js. To co pošleš by měl být produkt, který si uživatel vybral, případně konkrétní varianta produktu. Cenu produktu a jeho variant víš. Takže ti v ideálním případě přijde jméno,mail, telefon a nějaký product_variant_id. To product_variant_id muzes mit jako hidden input. Pokud ti to někdo změní v kodu, tak ti to je jedno. Ty máš správnou cenu navázanou na tu produktovou variantu…
- jAkErCZ
- Člen | 322
Já potřebuji jen to shrnutí vytáhnout data a uložit nějak podobně jak
třeba je
public function editorFormSucceeded($form, $values)
a ve $values mám ty hodoty co tam člověk napsal… ale tady
chci aby to do něčeho takového uložil hodnoty co si člověk naklikal a jsou
na konci v tom shrnutím pak klikl na objednat vyskočí okno doplní údaje a
pak se to celé pošle na mail ;)
ProductBuilder.prototype.createSummary = function() {
var self = this;
this.steps.each(function(){
//this function may need to be updated according to your builder steps and summary
var step = $(this);
if( $(this).data('selection') == 'colors' ) {
//create the Color summary
var colorSelected = $(this).find('.cd-product-customizer').find('.selected'),
color = colorSelected.children('a').data('color'),
colorName = colorSelected.data('content'),
imageSelected = $(this).find('.cd-product-previews').find('.selected img').attr('src');
self.summary.find('.summary-color').find('.color-label').text(colorName).siblings('.color-swatch').attr('data-color', color);
self.summary.find('.product-preview').attr('src', imageSelected);
} else if( $(this).data('selection') == 'accessories' ) {
var selectedOptions = $(this).find('.js-option.selected'),
optionsContent = '';
if( selectedOptions.length == 0 ) {
optionsContent = '<li><p>Nevybráno žádné příslušenství;</p></li>';
} else {
selectedOptions.each(function(){
optionsContent +='<li><p>'+$(this).find('p').text()+'</p></li>';
});
}
self.summary.find('.summary-accessories').children('li').remove().end().append($(optionsContent));
}
});
}
Jak mohu pomocí js/jqury vytáhnout dotyčné data?
Editoval jAkErCZ (23. 4. 2018 16:15)
- Oli
- Člen | 1215
Tak ono to může být i tak, že to co si bude vybírat, tak bude jen pěkně nastylovaný formulář. To znamená, že příslušenství bude checkbox (ale nemusí tak vypadat). Pak klikne na objednat. Otevře se modal a v něm budou ty inputy pro jméno, email, … (pořád ten samej formulář). A po odeslání to máš všechno.
Pokud prochází přes několik stránek, tak si to musíš někam uložit. Přihlášenýho uživatele asi nemáš, takže jedině co cookie nebo session. Asi bych to uložil osobně do cookie (klidně den platnost a tlačítko pro reset konfigurace).
Ale záleží jak to máš jinak napsaný. Neznám celý ten proces.
- jAkErCZ
- Člen | 322
Oli napsal(a):
Tak ono to může být i tak, že to co si bude vybírat, tak bude jen pěkně nastylovaný formulář. To znamená, že příslušenství bude checkbox (ale nemusí tak vypadat). Pak klikne na objednat. Otevře se modal a v něm budou ty inputy pro jméno, email, … (pořád ten samej formulář). A po odeslání to máš všechno.
Pokud prochází přes několik stránek, tak si to musíš někam uložit. Přihlášenýho uživatele asi nemáš, takže jedině co cookie nebo session. Asi bych to uložil osobně do cookie (klidně den platnost a tlačítko pro reset konfigurace).
Ale záleží jak to máš jinak napsaný. Neznám celý ten proces.
Jenže tam jde o to že ten konfigurátor si to ukládá do DOMu té webovky a já potřebuji poradit na javascriptem/jquery jak posbírat ty data a poslat do nette :)
- Oli
- Člen | 1215
Asi ti úplně nerozumím. Jak to dostat do nette jsem ti napsal (snad)
:-)
prostě to pošleš přes skrytý inputy. a jestli ten input naplníš přes
jQuery nebo ti ho vypíše někdo jinej je přece jedno. Můžeš mít klidně
pomocí stylů skrytej formulář a jak si něco vybere, tak to rovnou uloží
do toho inputu.
- jAkErCZ
- Člen | 322
Oli napsal(a):
Asi ti úplně nerozumím. Jak to dostat do nette jsem ti napsal (snad) :-)
prostě to pošleš přes skrytý inputy. a jestli ten input naplníš přes jQuery nebo ti ho vypíše někdo jinej je přece jedno. Můžeš mít klidně pomocí stylů skrytej formulář a jak si něco vybere, tak to rovnou uloží do toho inputu.
No a jak z těch DOM to natáhnu do toho inputu? Někde nějaký
exemple?
jelikož tady se mi vypisuje to co si uživatel vybral:
<li data-selection="summary" class="builder-step first-load">
<section class="cd-step-content">
<header>
<h1>Summary</h1>
<span class="steps-indicator">Step <b>4</b> of 4</span>
</header>
<ul class="summary-list">
<li>
<h2>Model</h2>
<img n:for="$i = 0; $i < $product->images_count; $i++"
src="{$basePath}/configurator/products/{$product->configure_id}/{$product->configure_id}_{$i}.jpg"
alt="{$product->title}" class="product-preview">
<h3>{$product->title}</h3>
<p>
{$product->short_description|striptags}
</p>
</li>
<li data-summary="colors">
<h2>Barva</h2>
<span class="summary-color">
<em class="color-swatch" data-color="red"></em>
<em class="color-label">Red Passion</em>
</span>
</li>
<li data-summary="accessories">
<h2>Příslušenství</h2>
<ul class="summary-accessories"></ul>
</li>
</ul>
</section>
</li>
Ale tam barvy a přislušenství natahuje js pomocí DOM… viz js
ProductBuilder.prototype.createSummary = function() {
var self = this;
this.steps.each(function(){
//this function may need to be updated according to your builder steps and summary
var step = $(this);
if( $(this).data('selection') == 'colors' ) {
//create the Color summary
var colorSelected = $(this).find('.cd-product-customizer').find('.selected'),
color = colorSelected.children('a').data('color'),
colorName = colorSelected.data('content'),
imageSelected = $(this).find('.cd-product-previews').find('.selected img').attr('src');
self.summary.find('.summary-color').find('.color-label').text(colorName).siblings('.color-swatch').attr('data-color', color);
self.summary.find('.product-preview').attr('src', imageSelected);
} else if( $(this).data('selection') == 'accessories' ) {
var selectedOptions = $(this).find('.js-option.selected'),
optionsContent = '';
if( selectedOptions.length == 0 ) {
optionsContent = '<li><p>Žadné příslušenství nebylo vybráno;</p></li>';
} else {
selectedOptions.each(function(){
optionsContent +='<li><p>'+$(this).find('p').text()+'</p></li>';
});
}
self.summary.find('.summary-accessories').children('li').remove().end().append($(optionsContent));
}
});
}
Editoval jAkErCZ (24. 4. 2018 15:12)
- jAkErCZ
- Člen | 322
CZechBoY napsal(a):
v jquery třeba takhle:
$(inputSelector).val($(domSelector).text());
Dobře pochopil jsem co dělá .val ale jak z toho js vytáhnu ten parametr co potřebuji?
V tom js tam mám třeba colorName = colorSelected.data(‚content‘), který bych rád dostal do toho .val
ale jak?
Editoval jAkErCZ (24. 4. 2018 15:44)