data do dialogu pomocí doctrine metody

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ondrusu
Člen | 118
+
0
-

Ahoj, mám takový dotaz.
Chci poslat do formuláře v bootstrap dialogu data, které si načtu z presenteru z doctrine metody.

public function handleRenderData($data_id) {
    if ($this->isAjax()) {
        $user = (array) $this->user_facade->getUser($data_id);
        $this->payload->table = $user;
        $this->sendPayload();
    }
}
function loadData(id) {
    $.nette.ajax({
        type: 'GET',
        url: "?do=renderData",
        data: {
            "data_id": id
        },
        success: function (data) {
          console.log(data.table);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            text = "An error occurred... Look at the console (F12 or Ctrl+Shift+I, Console tab) for more information!<br><br>"
                    + "<b>" + jqXHR.statusText + "</b><br>"
                    + jqXHR.responseText.substring(0, 360) + " . . . <b>More in console</b>";

        }
    });

}

V console vidím data, ale nevím jak se k nim v javascriptu dostat ( viz zde )
když napíšu data.table.id tak mi to vrátí undefined

a když napíšu místo

$user = (array) $this->user_facade->getUser($data_id);
$user = (object) $this->user_facade->getUser($data_id);

tak mi to vrátí prázdný object.
Nevíte kde dělám chybu? Resp. možná to dělám úplně blbě.

CZechBoY
Člen | 3608
+
0
-

Nemuzes ten formular prekreslit normalne snippetem?

luhla
Backer | 1
+
0
-

Ahoj, tohle nefunguje?

<script>
function loadData(id) {
    $.nette.ajax({
        type: 'GET',
        url: "?do=renderData",
        data: {
            "data_id": id
        },
		success: function (data) {
          console.log('email:'+data.table['*email']);
        }
	});
};
</script>

Ta * je tam asi z doctrine.

ondrusu
Člen | 118
+
0
-

toho jsem si také všiml, dokonce jsem to i zkoušel, ale výsledek je:
email: undefined

ondrusu
Člen | 118
+
0
-

A nemáte někdo tušení proč je tam ta hvězdička??
Vypsal jsem si cyklus

for (var key in  data.table) {
  console.log(key + ": " + data.table[key]);
}

Console vyhodila:
*id: 1
*password: $2y$10$a3IqDdOr9mWQt4wFpGD5puDFgJ8ekUOAowMCO7FmhBRgPSCjb9DwO
*email:
*first_name: user
*last_name: user
.
.
Ale když zadám

console.log('email:'+data.table['*email']);

Tak to vyhazuje undefined.

David Matějka
Moderator | 6445
+
+1
-

A nemáte někdo tušení proč je tam ta hvězdička??

protoze jsou protected. http://ocramius.github.io/…-conversion/

takhle nechces posilat data do sablony, napis tam normalne

[
	'email' => $user->getEmail(),
]

(nebo pouzij komplexni reseni jako JMS serializer)

ondrusu
Člen | 118
+
0
-

David Matějka: díky, udělal jsem to ručně, asi je to nejlepší způsob.
Ještě jednou díky všem.