Dynamic snippet a nesprávne vykreslovanie šablony

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

Čaute,
pokúšam, sa mazať nejaké veci z DB pomocou AJAXU namiesto PHPcka, zrejme nič nezvyčajné mám zoznam užívateľov v tabuľke, a chcem zmazať 1 z nich a rád by som aby sa mi nový zoznam prekresil ajaxom bez nutnosti refreshu.

Môj kód vyzera asi takto:
<div class=„box-content“>

						{snippet wholeList}
						<table class="table table-striped table-bordered bootstrap-datatable datatable">
						  <thead>
							  <tr>
								  <th>Id</th>
								  <th>UserName</th>
								  <th>Query</th>
								  <th>Daily limit</th>
								  <th>Total query</th>
								  <th>Actions</th>
							  </tr>
						  </thead>
						  <tbody>
						  	<tr n:foreach="$users as $user" snippet="itemsContainer">
						  		<td>{$user->userID}</td>
						  		<td class="center">{$user->username}</td>
						  		<td class="center">{$user->query}</td>
						  		<td class="center">{$user->max_query}</td>
						  		<td class="center">{$user->total_query}</td>
								<td class="center">
									<a class="btn btn-success" n:href="detail $user->userID, $user->username">
										<i class="halflings-icon white zoom-in"></i>
									</a>
									<a class="btn btn-info" href="#">
										<i class="halflings-icon white edit"></i>
									</a>
									<a
										data-nette-confirm="modal"
										data-nette-confirm-title="Confirm"
										data-nette-confirm-text="Are you sure you want to delete user <strong> {$user->username} </strong>?"
										data-nette-confirm-ok-class="btn-danger"
										data-nette-confirm-ok-text="Yes"
										data-nette-confirm-cancel-class="btn-success"
										data-nette-confirm-cancel-text="No"
										class="btn btn-danger"
										data-ajax="on" // or class="ajax"
										n:href="delete! $user->userID">
									   <i class="halflings-icon white trash"></i>
									</a>
								</td>
						  	</tr>
						  </tbody>
					  </table>
					  {/snippet}
					</div>

A presenter:

	public function handleDelete($id)
	{
		$this->facade->deleteById($id);
		if ($this->isAjax()) {
$this->invalidateControl('wholeList');
	    } else {
	        $this->redirect('this');
	    }
	}

Ak WHOLELIST snippet dám pod <tbody>, načíta sa mi zoznam 2×, 1. V tabulke ako má byť (ten tam asi ostava a nenacita sa uz), 2. uplne mimo tabulky

Ak tento kód použijem , mám dojem, že sa načítata nanovo celý zoznam a celkom určite sa nenačíta napr JSko pre vyhľadávanie v tabuľke a podobne. Predpokladám, že robím nejakú chybu, mohol by mi to niekto vysvetliť?

Editoval Andurit (9. 4. 2015 14:43)

David Matějka
Moderator | 6445
+
0
-

nemas tam dynamicky snippet, ty museji mit nazev ve formatu foo-$id viz doc

Ak WHOLELIST snippet dám pod <tbody>

to takhle nemuzes, snippet vytvari obalovaci DIV. Ale mohlo by fungovat namisto makra {snippet} pouzit n:makro

<tbody n:snippet="wholeList">
Andurit
Člen | 131
+
0
-

Asi tomu nerozumiem úplne správne, v mojom prípade by to teda malo vyzerať napr:

n:snippet="item-$user"

pokusil som sa to hodiť do toho <a> kde mám DELETE, neprešlo to tak som skusil obaliť všetko do pod foreachom do 1 SPANU s týmto snippetom, no dostanem error na Array to string conversion.

Na základe tohto som ešte skúsil obaliť všetko nejako takto

{snippet users-$user->userID}
{/snippet}

Tu mám znova problem s duplicitnym vykreslenim, spodná uz vopred vykreslená tabulka a pravdepodobne updatnute vykreslena hordna cast

Editoval Andurit (9. 4. 2015 16:12)

Andurit
Člen | 131
+
0
-

vedel by si mi ešte poradiť?