Opravdu velky projekt – inzertni server, blog, forum…co na to nette2?
- flexroad
- Člen | 117
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
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í.
- Mesiah
- Člen | 240
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
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
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