Dialog s formulářem se neotevírá
- scientific
- Člen | 94
Ahoj, známému se snažím na tlačítko, které generuje dobropis přidat dialogové okno „Skutečně si přejte vystavit dobropis?“.
Hlavní problém je, že nic nedělá, když kliknu na tu ikonu, která má otevírat ten dialog. Je z toho prosím nějak patrné, co mám špatně? Děkuji pěkně.
Původní Latte:
<a class="btn_dobropis" n:href="Admin:GetDobropis $order[id],true" title="{_"DOBROPIS"}"></a>
Nové Latte:
<a class="btn_dobropis postId use_dialog_adminDobropisConfirm" data-form="adminClientDobropisForm-submit" data-identifier="order_id" data-value="{$order[id]}" href="" title="{_"DOBROPIS"}"></a>
Dialog:
{* Latte template *}
{block content}
<div id="dialog_adminDobropisConfirm" class="dialog">
{_"D_DOBROPIS_TEXT"}
{ifset $eet_enabled}
<br><br>
<span class="checkbox">
<input type="checkbox" class="eet"><label>{_"D_DOBROPIS_EET_TEXT"}</label>
</span>
{/ifset}
</div>
<script>
$(function(){
$(".use_dialog_adminDobropisConfirm").unbind();
$(".use_dialog_adminDobropisConfirm").click(function(e) {
var button = $(this);
e.preventDefault();
$("#dialog_adminDobropisConfirm").dialog({
title:{_"D_DOBROPIS_NADPIS"},
modal:true,
draggable:false,
width:500,
buttons: {
{_"D_DOBROPIS_BTN_OK"}: function() {
var d = this;
if ($(button).hasClass("postId")) {
var values = {};
values[$(button).data("identifier")] = $(button).data("value");
if ($(d).find(".eet").prop("checked")) {
values["eet"] = true;
}
values["do"] = $(button).data("form");
$.post("", values, function(data) {
$(d).dialog("close");
UseAjaxResponse(data);
});
} else {
window.location = $(button).attr("href");
}
},
{_"D_DOBROPIS_BTN_STORNO"}: function() {
$(this).dialog("close");
}
}
});
});
});
</script>
Form:
<?php
use Nette\Application\UI\Form;
class AdminClientDobropisForm extends Form {
public function __construct(Nette\Application\UI\Presenter $parent, $name)
{
parent::__construct($parent, $name);
$this->addHidden("order_id");
$this->addCheckbox("eet");
$this->addSubmit("send");
$this->onSuccess[] = array($this,"success");
}
public function success(Form $form, $values)
{
//nějak jsem dostat něco jako redirect sem: n:href="Admin:GetDobropis $order[id],true" s hodně štěstím by to pak mohlo fungovat správně. :-D
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://example.cz/admin/get-dobropis?order_id=9655&open=1");
header("Connection: close");
// snad to bude takto fungovat správně :-)teda ještě potřebuji to order_id nahradit proměnnou, ale ta informace o order_id asi bude v té proměnné values možná něco jako values['order_id'];
}
}
?>
Editoval scientific (24. 5. 2022 12:38)
- scientific
- Člen | 94
To jsem noob, že jsem koukal do logů na straně serveru a ne do konzole prohlížeče… :-D
Tak dialog se už zobrazuje, chyběl include na latte dialogu z latte stránky. Kliknutí na tlačítko OK je ale mrtvé, nic to nedělá. :-)
Resp konzole píše:
XHR POST https://example.cz/admin/orders
[HTTP/1.1 403 Forbidden 585ms]
order_id "9680"
do "adminClientDobropisForm-submit"
Nechápu ty souvislosti v Nette no. Někde je potřeba asi něco definovat, ale co, kde, to už ví jen asi jen Nettař, nedokážu ty data odsledovat ani diagnostikovat.
Vlastně to říká, že to neumí najít příslušný formulář, ale vytvořil jsem soubor formuláře adminClientDobropisForm.php s obsahem:
<?php
use Nette\Application\UI\Form;
class AdminClientDobropisForm extends Form {
public function __construct(Nette\Application\UI\Presenter $parent, $name)
{
parent::__construct($parent, $name);
$this->addHidden("order_id");
$this->addCheckbox("eet");
$this->addSubmit("send");
$this->onSuccess[] = array($this,"success");
}
public function success(Form $form, $values)
{
mail("info@mydreams.cz","Bill testik","yes");
//$this->parent->adminManager->OrderPay($values->order_id, $values->eet);
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://bill.mydreams.cz/admin/get-dobropis?order_id=9655&open=1");
header("Connection: close");
}
}
?>
Vlastně asi potřebuji z toho ‚do „adminClientDobropisForm-submit“‘ nasměrovat nějak na class AdminClientDobropisForm extends Form { construct()
Editoval scientific (24. 5. 2022 12:44)
- scientific
- Člen | 94
Už to mám, chtělo to do presenteru ještě toto:
public function createComponentAdminClientDobropisForm($name)
{
$form = new \AdminClientDobropisForm($this, $name);
return $form;
}
Nette je nejsložitější lego na světě. :-D
Editoval scientific (24. 5. 2022 12:49)
- scientific
- Člen | 94
Dialog se tedy už správně otvírá, děkuji.
Editoval scientific (24. 5. 2022 15:40)