Opravdu velky projekt – inzertni server, blog, forum…co na to nette2?

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

Dobry den,

zacinam planovat pomerne rozsahly projekt (INZERTNI SYSTEM, BLOG, FORUM) a rad bych pri psani pouzil v ramci samostudia neco jineho nez ZEND.
System by mel umet pracovat ve vice jazykovych mutacich, mel by take umet zobrazovat rozdilne meny.

Chtel bych se proto poradit s mistnimi GURU a rad bych komunitu poprosil o lehke nasmerovani.
Rad bych pocital i s teoretickou moznosti, ze databaze bude obsahovat velke mnozstvi zaznamu(miliony),
proto se vubec nebudu zlobit ani za nazor, jestli je vhodne pouzit Nette DB, nebo radeji zustat u Doctrine.

Mam nekolik nasledujicich dotazu, ktere asi nejlepe vysvetlim na konkretnich prikladech…

Vypis inzeratu
potrebuji vytvorit dynamicke routy pro zobrazeni jednotlivych inzeratu a nejradeji bych to mel takto:
http://server.com/…od-uzivatel1 pro ceskou, respektive http://server.com/…uct-by-user1 pro anglickou verzi

Nelibi se mi varianta http://server.com/**cs**/blabla, pripadne http://server.com/**en**/blabla

To jestli se stranka vykresli v anglictine, nebo v cestine, mam v planu rozhodovat podle nejake hodnoty ulozene v session.
Tuto hodnotu pochopitelne nastavim pri prvnim spusteni na zaklade jazykoveho nastaveni prohlizece a bude kdykoliv zmenitelna (aby uzivatel mohl prepinat jednotlive jazykove mutace).

Pridani inzeratu
Toto by se melo dit pres standardni formular (predpokladam, ze k tomu je idealni nette form).
Formular ale bude potreba rozsirit i o dost specialnich UI komponent(asi bootstrap + jQuery), napriklad pro vybery kategorii a podkategorii (plan je neco grafickeho s obrazkama :D) a urcite mnohem vice custom, nez je napriklad chosen select.
Poradite co je pro tyto pripady nejlepsi?

Prepinani jazykovych mutaci
Jak jsem jiz psal vyse, jazykova mutace by se zvolila na zaklade nastavene hodny v session. Jak tuto hodnotu elegnatne menit? Poslat to pres $_POST nejakemu presenteru, ktery to zmeni v session a pote vrati stranku s vybranym jazykem? Je to korektni reseni?

Kam ukladat preklady?
Rad bych mel veskere preklady ulozeny v databazi, ale zaroven bych rad zajistil co nejlepsi cachovani. Predpokladejme ze server bude mit hodne navstev, tak aby to makalo jak ma ;-)!
Napada me varianta generovat jednotlive preklady do soubory a ty potom nacitat aplikaci.
Nebo mate nejaky lepsi tip, jak to idealne tahat co nejrychleji primo z databaze?

Budu moc rad, pokud si nekdo udela chvili casu a lehce me popostrci!

Diky @flexroad

Editoval flexroad (26. 6. 2014 22:09)

Tomáš Votruba
Moderator | 1114
+
+3
-

Pro překlady koukni na Kdyby\Translation.
Řeší ukládání do session, přepínání jazyka, cachování slovníků a jejich umístění.

akadlec
Člen | 1326
+
-7
-

no ale jestli to chce dělat v ZENDu tak by se měl obrátit na forum ZENDu ne? ;)

Mesiah
Člen | 240
+
+2
-

ahoj, nevidím důvod proč by s tím mělo mít nette problém.
ohledně vypisu inzerátu – to že se ti nelíbí mít v URL cs/en chápu, ale není vhodné to tam necham minimálně kvůli analytice?
přidání inzerátu – sám používám bootstrap + kendo ui komponenty na formuláře, jediný problém na který jsem narazil byl v autocomplete, kdy jsi renderoval select (bez hodnot) a z něj vytvořil autoselect v js, jenže nette forms nerenderují select, pokud nenaplníš pole hodnot – najít tento problém a opravit jej trvalo asi 30 minut a jeden řádek. Takže nette form jsou naprosto bezproblémové.
přepínání – $_POST ještě někdo používá? :) pokud chceš pro přepínání jazyků použít odeslání formuláře, tak při definici formuláře definuješ i callback po úspěšném odeslání, či můžeš použít signál nebo klasický odkaz, kdy presenter obslouží akci s danými argumenty (cs/en/…) a provede redirect na původní stránku, opět žádný problém.
ukládání překladů – to je obecná otázka a moc nesouvisí s nette, takže tady použíj vlastní zkušenosti ze zendu.

Editoval Mesiah (27. 6. 2014 10:08)

iguana007
Člen | 970
+
+2
-

akadlec napsal(a):

no ale jestli to chce dělat v ZENDu tak by se měl obrátit na forum ZENDu ne? ;)

Vždyť hned v první větě píše: „rad bych pri psani pouzil v ramci samostudia neco jineho nez ZEND“ :)

iguana007
Člen | 970
+
+6
-

DB – šel bych do Doctrine

Výpis inzerátů – jak už zmínil @Mesiah , tak bych to tam nechal kvůli analytice – např. pro Google analytics se ti to může hodit, když budeš chtít porovnávat EN a CS verzi webu – samozřejmě, že by si to mohl pořešit třeba pomocí custom var, ale ten první způsob je určitě pohodlnější/přehlednější (v URLs rovnou vidíš o jakou jaz. mutaci se jedná).

Přídání inzerátu – tady bych šel nejspíše do vícekrokového formu ala Wizard form – je to vždy lepší, než jeden mega form přes 3 obrazovky (viz. Aukro). Vizuál si už můžeš vybrat sám, možnosti je mnoho (já preferuji Bootstrap + příp. ještě custom template pro něj, pokud není preferován default vzhled, na netu je jich plno free i placených).

Lang switch – viz. výše – řešil bych to přes tu url, takže ani nemusíš pak řešit post, jen si uděláš link:

{link this lang => 'cs'}
  • pak by sis jen do routeru přidal nějaký filtr, který by zároveň přepnul i ty parametry url do vybraného jazyka, aby se ti jen nezměnil lang parametr URL a zbytek URL nezůstal v původním jazyce

Překlady – na to ti už odpověděl @TomášVotruba výše :)

David Ďurika
Člen | 328
+
-3
-

TL;DR @iguana007 ale urcite nepouzi doctrine, my sme ju pouzili na tiez dost velky projekt a teraz to uz lutujem a pomali prerabam do LeanMapper of @Tharos