Nette Ajax chyba na URL prezenteru

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

Stáhnul jsem si nette.ajax.js (verze 2.0.0) nahrál do js/ složky a v @layout.latte jsem přidal

{block scripts}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="{$basePath}/js/nette.ajax.js"></script>

a do setup.js jsem přidal (javascript pro presenter Setup)

$(function () {
    $.nette.init();
});

function preLoad(id) {
            $.nette.ajax({
                type: 'GET',
                 url: {link renderUserData!}, // CHYBA netbeans podtrhlo a nevidim dostupné prom.
                data: {
                    "id": id
                }
            });
}

$(function () {
    $("img#edit-btn").click(function () {
        var id = $(this).attr('class');
        $("#edit-dialog").load(preLoad(id)).dialog("open");
    });

    $("img#delete-btn").click(function () {
        var id = $(this).attr('class');
        $("#delete-dialog").dialog("open");
    });

    $("#edit-dialog").dialog({
        autoOpen: false,
        modal: true,
        draggable: false,
        resizable: false,
        width: 350,
        title: "Edit User",
        buttons: {
            "Save": function () {
                $(this).dialog("close");
            },
            Cancel: function () {
                $(this).dialog("close");
            }
        }
    });

    $("#delete-dialog").dialog({
        autoOpen: false,
        title: "Delete User",
        resizable: false,
        draggable: false,
        modal: true,
        buttons: {
            "Delete User": function () {
                $(this).dialog("close");
            },
            Cancel: function () {
                $(this).dialog("close");
            }
        }
    });

    $("#create-user").button().on("click", function () {
        $("#edit-dialog").dialog("open");
    });

});

do presenteru SetupPresenter.php jsem dal

public function handleRenderUserData($user_pers_id) {
        $this->template->user_detail = $this->database->table('user')->select('*')->where('persNo', $user_pers_id);
}

Vše výše zmíněné mi slouží pro add/edit/delete uživatelů, přičemž když se mi otevře dialogové okno(jquery ui dialog pro práci s daty), načtu si přes ajax data daného uživatele a pak s ním budu dále pracovat, bohužel mi nefunguje zadání handleRenderu v url u ajaxu

url: {link renderUserData!}, // CHYBA -> Uncaught SyntaxError: Unexpected identifier

inspiroval jsem se zde

Vyvíjím v Netbeans a nette.ajax.js jsem nahrál ručně

Jediné co potřebuji je nahrát data z mysql databáze to template users → do dialogového okna

template users vypadá takto

{block content}

<!-- create/update reservation dialog -->
<div id="edit-dialog" title="Create new user">
    <p class="validateTips">All form fields are required.</p>
    <form>
        <fieldset>
            <label for="name">Jméno</label>
            <input type="text" name="name" id="name" value="" class="text ui-widget-content ui-corner-all">
            <label for="password">Přijmení</label>
            <input type="text" name="lastname" id="lastname" value="" class="text ui-widget-content ui-corner-all">
            <label for="email">Email</label>
            <input type="text" name="email" id="email" value="" class="text ui-widget-content ui-corner-all">
            <label for="persno">Personal number</label>
            <input type="text" name="persno" id="persno" value="" class="text ui-widget-content ui-corner-all">

            <label for="persno">Role</label>
            <select>
                <option value="user">User</option>
                <option value="admin">Admin</option>
            </select>
        </fieldset>
    </form>
</div>

<div id="delete-dialog">
    Opravdu si přejete smazat tohoto uživatele ?
</div>

<div class="row">
    <div class="col-sm-12">

        <h4>Seznam uživatelů</h4>
        <button id="create-user">Create new user</button>

        <table class="t_style_1">
            <thead>
                <tr><th>Personal No.</th><th>Email</th><th>First name</th><th>Last name</th><th>Role</th><th>Edit</th><th>Delete</th></tr>
            </thead>
            <tbody>

                {foreach $all_users as $usr}
                    <tr>
                        <td>{$usr->persNo}</td>
                        <td>{$usr->email}</td>
                        <td>{$usr->firstName}</td>
                        <td>{$usr->lastName}</td>
                        <td>{$usr->role}</td>
                        <td>
                            <img src="{$baseUri}/images/settings-20.png" class="{$usr->persNo}" id="edit-btn">
                        </td>
                        {if $usr->persNo != $actLogUserPersNo}
                            <td>
                                <img src="{$baseUri}/images/cross-20.png" class="{$usr->persNo}" id="delete-btn">
                            </td>
                        {/if}
                    </tr>
                {/foreach}
            </tbody>
        </table>

    </div>
</div>
{/block}

{block scripts}
{include parent}
<script src="{$basePath}/js/jquery-ui.min.js"></script>
<script src="{$basePath}/js/setup.js"></script>
{/block}

{block head}
<link rel="stylesheet" href="{$basePath}/css/jquery-ui.min.css">
<link rel="stylesheet" href="{$basePath}/css/jquery-ui.structure.min.css">
<link rel="stylesheet" href="{$basePath}/css/jquery-ui.theme.min.css">
{/block}

A vypsání by bylo asi přes snippet (ale s tím zatím nemám žádné zkušenosti, pokud by mi sem někdo hodil jak by to mohlo fungovat)

EDIT

Nevšiml jsem si, že má js vložen do templatu a předpokládal jsem, že je nette tak sofistikované, že mohu volat funkce presenteru v externím js file

Editoval Joacim (13. 4. 2015 7:50)