Odchytenie TRUE, alebo FALSE po ajaxovom requeste

KristianSubweb
Člen | 146
+
0
-

Ahojte chel by som sa opýtať mam form.Po ktorého odoslaní chcem odchytiť hlášku (True,False).

V presenteri si vytváram composennentu.

public function createComponentAddIssueForm() {

        $form = $this->issueFormFactory->createAddForm();
        $form->onSuccess[] = function() {
            $this->payload->success = 1;
            $this->sendPayload();
        };
        $form->onError[] = function() {
            $this->payload->success = 0;
            $this->sendPayload();
        };
        return $form;
    }

V konzole sa mi normálne vráti TRUE alebo False ale javascriptovo to neviem dostat do nejakej premenej.

Ďakujem :)

Mistrfilda
Člen | 76
+
0
-

Ahoj,

nejsem si uplne jisty z tveho prikladu k cemu to pouzivas, jestli to pouzivas napr. na validaci mozna bude lehci cely form obalit do snippetu:

{snippet form}
	{control form}
{/snippet}

a pote v onSuccess metode zavolat neco jako:

<?php
	public function formOnSuccess($form)
	{
		$form['text']->addError('Error');
		$this->redrawControl('form');
	}
?>

Popripade lze vytvorit promenou ktera bude mit defaultni hodnotu napr. FALSE, predavat v render metode do sablony. Hodnotu pak lze nastavit opet v onSuccess metode i s invalidaci snippetu.

<?php
	private $error = FALSE;

	public function render()
	{
		$this->getTemplate->error = $this->error;
		..
	}

	public function formOnSuccess($form)
	{
		$this->error = TRUE;
		$this->redrawControl('form');
	}
?>
{snippet form}
	{if $error}
		Error
	{/if}
	{control form}
{/snippet}
KristianSubweb
Člen | 146
+
0
-

Mne sa v response vráti či ten formulár bol tru alebo false a ja ten responce potrebujem nejak dostať do javasriptu neviem či sa dobre vyjadrujem.

takyto json dostanem späť

{"success":1}

a ja si potrebujem tu repsonse hlašku spracovať

pre lepšie pochopenie.

console.log( tu si potrebujem nejakým sposobom vypísať to čo sa mi vrátilo v respose )

Editoval KristianSubweb (23. 4. 2018 11:49)

Mistrfilda
Člen | 76
+
0
-

No moc to stale nechapu, co se snazis pote v tom javascriptu udelat?

Jinak v nette.ajax.js se s tim pracuje napr. takto:

<script>
    $.nette.ajax({
        off: ['spinner'],
        url: {link refresh!},
        success: function (payload) {
            var test = payload.value;
            console.log(payload.text);
        }
    });
</script>
<?php
	public function handleRefresh()
	{
		$this->payload->text = 'aaa';
		$this->payload->value = 1;
		$this->sendPayload();
	}
?>

Editoval Mistrfilda (23. 4. 2018 12:17)