Jak udělat Tagování u článku

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

Zdravím, chtěl bych se zeptat jestli je tu nějaká dobrá duše která by věděla tohle udělat a zaslat řešení , nikde jsme to tu na fórku nevidel . Tak kdyby byl někdo hodný sem stim . HEZKÝ den

Michal Vyšinský
Člen | 608
+
+10
-

A zkusil si to už vůbec? Hotový kód ti sem nikdo nedá, tím by ses nic nenaučil.

Azathoth
Člen | 495
+
0
-

@lukyn94 jak bys to udělal v normálním php bez nette?

thm
Člen | 147
+
+3
-

Tak tak, otázka je hrozně moc obecná.

Začni tím, že si vytvoříš modelovou třídu např. TagManager, která se bude starat o ukládání názvů tagů do DB (nebo prostě někam). Implementuj metody např. createTag($name), deleteTag($name), tagExists($name) atd..
Pak si vytvoř spojovací tabulku se sloupci id, tag_id a article_id a nauč TagManager pracovat s touto spojovací tabulkou tj. implementuj další metody např. addTag($tagId, $articleId) atd..

lukyn94
Člen | 30
+
-1
-

Mě jde o přidávání a upravu tech tagu při článku bublina s křížkem jinak tam mam suggest input napovídá tagy který už mám v databázi. Chci udělat že ten suggest napoví ukáže se to v tom inputu a takhle bych chtěl ty bublinky s křížkem .

Azathoth
Člen | 495
+
+4
-

Mohl bys, prosím, psát česky?

David Matějka
Moderator | 6445
+
+3
-

@lukyn94 MultiSelect + chosen

Kcko
Člen | 470
+
0
-
thm
Člen | 147
+
0
-

Já jsem teď nedávno použil jQuery multiple autocomplete http://jqueryui.com/autocomplete/#… do jednoduchého inputu. Pak udělám explode(',',$array), odstraním přebytečné mezery (\Nette\Utils\Strings::trim()), prohledám databázi nalezených shod s existujícími tagy, ty připojím k článku a ty co jsem nenašel vytvořím a připojím.

Editoval thm (29. 9. 2014 14:49)

Kcko
Člen | 470
+
+1
-

@thm asi ano, nicméně kvuli jednoduché komponentě taháš zbytečně celké velké jQuery UI

lukyn94
Člen | 30
+
0
-

Tak uz to mam ted delam vypis tech tagu v multiselectu ale problem pridam k danemu clanku tag a vypise se vzdy posledni tag :
http://clip2net.com/s/j0lsN8
http://clip2net.com/s/j0luGp
Clanek s ID 1 mam 3 tagy ale tam se to nevypisou vsechny jen vzdy posledni pridanej (viz. screeny)

<?php
	public function viewAllTags()
	{
		return $this->db->table('tag');
	}

	public function viewArticleTags()
	{
		return $this->db->table('article_tag');
	}

			$allTags		= $this->tagModel->viewAllTags()->fetchpairs('id', 'tag');
			$addsTags		= $this->tagModel->viewArticleTags()->where(['article_id' => $this->article->id])->fetchPairs('article_id','tag_id');


			$form->addMultiSelect('tag','Tag :', $allTags)
				->setAttribute('class', 'chosen-select')
				->setDefaultValue($addsTags);
?>

Editoval lukyn94 (30. 9. 2014 21:50)

Azathoth
Člen | 495
+
0
-

Já se v javascriptu moc nevyznám, ale nemá se do tagů <script> dávat javascript a ne php?

lukyn94
Člen | 30
+
0
-

omlouvam se neni to js ale php

David Matějka
Moderator | 6445
+
+1
-

nemuzes tam mit

->fetchPairs('article_id','tag_id');

jelikoz article_id jsou pro vsechny zaznamy stejny, tak se ty prvky v poli prepisou, pouzij

->fetchPairs(NULL,'tag_id');
lukyn94
Člen | 30
+
0
-

@matej21 dekuji ;-) pomohlo