Nette Ajax chyba na URL prezenteru
- Joacim
- Člen | 229
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)