IT NEWS PC REVUE PC FORUM FreeBSDInternet time: @349
Obsah fóra
Pravidlá  •  Kontakt  •  Prihlásenie  •  Registrácia

Dala som si poradiť

O moje peniaze je postarané. A o vaše? www.partnersgroup.sk

Zbavte sa viazanosti

Za Samsung Galaxy Ace so zlatým O2 Paušálom zaplatíte teraz 12 €! pausal.o2.sk

Úsporná stavba domu

PORFIX - postavte si dom úspornejšie! Ušetríte na energiách! www.Porfix.sk

Spoločnosti Online s.r.o.

Ponúkame čisté spoločnosti. Obchodný register vybavíme za vás! www.spolecnostionline.cz

Poistenie presne pre Vás

Využite naše komplexné služby, sme tu práve pre Vás - presvedčte sa. www.uniqa.sk

MVC architektura

Zaslať odpoveď
AutorSpráva
misko16
Užívateľ
Užívateľ

Založený: 12.11.2008
Príspevky: 88

PríspevokZaslal: St 28.12.11 22:04Odpovedať s citátomNávrat hore

zdravim,

zacal som sa trochu zaujimat o tento sposob tvorenia webov, pokukal par tutorialov a frameworkov a nie vsetko som dostatocne pochopil. respektive som schopny uz vytvorit v podstate hocijaku web aplikaciu prostrednictvom jednoho jednoduchsieho MVC frameworku, len neviem, ci by bola spravne strukturovana podla MVC logiky.

najprv som skusal Zend Framework, ten bol ale dost zlozity a pre mna asi zbytocny, kedze nechapem poriadne ani zakladom. nasiel som si teda taky uplne elementarny framework http://www.phpro.org/tutorials/Model-View-Controller-MVC.html , co je nieco ako zjednodusena verzia Zendu a do neho si chcem spravit jednoduche CMS. zo zaciatku staci, ked bude prepojeny z MySQL DB a schopny odtial vytiahnut nejake zakladne settingy, dalej samozrejme zobrazovat jednotlive stranky, ktore budu tiez v DB a zakomponovat do toho nejakym sposobom moznost zmenit jazyk, ktory sa ulozi userovi do cookies. nasledne si preklad predstavujem tak, ze kazdy string pred vystupom prebehne nejakou funkciou, ktora ho vyhlada v patricnom csv subore a ak najde, prelozi.

stiahol som si teda ten framework a zacal som so zobrazovanim straniek. do indexovej akcie indexoveho kontroleru som napisal kod na vytiahnutie titulku a HTML kodu z databaze pre indexovu stranku, posunul tieto hodnoty templejte a ta to vykreslila. dalej je v tom kontroleri funkcia _call(), ktora zaisti zobrazovanie dalsich straniek.

dalej chcem spravit nejake menu a uz tu som si neisty. kam ten kod pre zobrazovanie menu vlozit? mam spravit novy kontroler pre menu a potom to nejakym sposobom prepojit alebo to zakomponovat do indexoveho kontrolera? to iste pre preklad, vobec neviem kam tu funkciu mam plesknut :/

mohol by mi to niekto vysvetlit? pripadne poskytnut nejaky vhodny priklad jednoducheho webu, ktory vyuziva MVC?

dakujem
Zobraziť informácie o autoroviOdoslať súkromnú správu
emer
Užívateľ
Užívateľ

Založený: 26.12.2006
Príspevky: 3683
Bydlisko: Nitra
Vek: 18

PríspevokZaslal: St 28.12.11 23:01Odpovedať s citátomNávrat hore

CodeIgniter si skusal?

http://codeigniter.com/user_guide/

// pridané po 48 sekundách od posledného príspevku

mas tam aj videotutorialy, popripadne na zajtra.sk je celkom poho videocast

_________________
Pocity popi*i, keď víš že všetko hrá jak má, vychádza to všetko pekne, tak jak má, hovorim si ná ne, musíš vedeť plánovať
Zobraziť informácie o autoroviOdoslať súkromnú správuICQZobraziť autorove WWW stránky
misko16
Užívateľ
Užívateľ

Založený: 12.11.2008
Príspevky: 88

PríspevokZaslal: Št 29.12.11 0:40Odpovedať s citátomNávrat hore

tak problematika je tam predsa rovnaka. nejde mi o framework, ale proste o celkove pochopenie toho MVC.

ten kontroler, co ma na starosti zobrazovanie stranok, si myslim, ze mi funguje spravne - vypyta si udaje (titulok, HTML kod) z db pre konkretnu stranku a posle ich do viewu. zvysok templejty stranky ako header a footer je definovany v php subory na serveri. cize jedine, co je tam zatial dynamicke, je ten titulok a HTML kod danej stranky.

menu by som mohol spravit podobne, ze jednoducho v tom istom kontrolery si selectnem z databazy vsetky titulky a poslem ich v arrayi do view, kde ich nejakym cylkom zobrazim. neviem ale to, ako a kam zakomponovat do toho webu nejake ine funkcie, ako spominany preklad alebo hocico ine, co vlastne ani nepotrebuje databazu, aby to bolo stale v tom MVC kontexte.
Zobraziť informácie o autoroviOdoslať súkromnú správu
emer
Užívateľ
Užívateľ

Založený: 26.12.2006
Príspevky: 3683
Bydlisko: Nitra
Vek: 18

PríspevokZaslal: Št 29.12.11 12:28Odpovedať s citátomNávrat hore

no tazko ti poviem, kedze tvoj Framework nepoznam a netusim ako tam funguje hierarchia.

no vseobecne by to malo byt asi tak, ze kontroler a jeho metody ti vlastne kontroluju, ktora cast webu sa zobrazi. model ti komunikuje s databazou, spracuva nejake data. takez v kontrolery volas potrebne metody z modelov a dalej nejak spracujes data. a nakoniec do viewu tie data posielas, aby si ich zobrazil v prehliadaci.

takze ak chces vytvorit menu, nevytvaras dalsi kontroler, ale ho vygenerujes v nejakej casti modelu.

v CI existuju aj helpre popripadne libraries. takze ja to tam robim trochu inak, ale je to zbytocne vysvetlvoat, ekd itak nebudes mat sajnu o com hovorim.


Pozri si te videotutiraly, ktore som ti spominal. ten videocast na zajtra.sk ma viac dielov a je po slovensky, takze by si z toho mal dost pochopit.

Dalej co je "original" tutorial od tvorcov CI, ukazuju tam ako za 20 minut naprogramovat blog pomocou toho FW. a je tam aj nejaky uvod do CI. z toho by si mal princip pochopit.

_________________
Pocity popi*i, keď víš že všetko hrá jak má, vychádza to všetko pekne, tak jak má, hovorim si ná ne, musíš vedeť plánovať
Zobraziť informácie o autoroviOdoslať súkromnú správuICQZobraziť autorove WWW stránky
misko16
Užívateľ
Užívateľ

Založený: 12.11.2008
Príspevky: 88

PríspevokZaslal: Po 02.01.12 19:53Odpovedať s citátomNávrat hore

no pozeral som si tak letmo tu user guide a nejake priklady a je to v podstate +- dost podobne tomu zendu. v zende som to ale pochopil tak, ze model je naviazany iba na jednu tabulku v databaze. tu ale pozeram, ze vlastne mozem pracovat s ktoroukolvek tabulkou.

cize keby som napriklad chcel spravit indexovu stranku, ktora by vypisovala 10 najnovsich noviniek a 10 najnovsich tem vo fore, tak do indexoveho modelu by som spravil jednu metodu, ktora by vracala 10 noviniek z novinkovej tabulky a druhu z fora. v kontroleri by som to array vlastne iba posunul do viewu, kde by sa to nejakym cyklom vypisalo. tak?
Zobraziť informácie o autoroviOdoslať súkromnú správu
emer
Užívateľ
Užívateľ

Založený: 26.12.2006
Príspevky: 3683
Bydlisko: Nitra
Vek: 18

PríspevokZaslal: Ut 03.01.12 19:25Odpovedať s citátomNávrat hore

no myslim ze si to pochopil spravne

_________________
Pocity popi*i, keď víš že všetko hrá jak má, vychádza to všetko pekne, tak jak má, hovorim si ná ne, musíš vedeť plánovať
Zobraziť informácie o autoroviOdoslať súkromnú správuICQZobraziť autorove WWW stránky
misko16
Užívateľ
Užívateľ

Založený: 12.11.2008
Príspevky: 88

PríspevokZaslal: Po 09.01.12 16:49Odpovedať s citátomNávrat hore

tak diky moc, celkom ma to chytilo

inak skusam si prerobit moj povodny web do tohoto frameworku a celkom mi tam nevyhovuje ta trieda Language, lebo preklady dokaze cerpat iba so suborov na serveri. kedze ale ja mam kopu prekladov dlhsich textov ulozenych v databazi, ako to riesit? zatial som to spravil tak, ze som si vytvoril novu kniznicu (do application/libraries), ktora cerpa tie preklady z DB na zaklade ID. v podstate mi vsetko funguje ako ma, len by som chcel vediet tvoj nazor, ci je to riesene spravne a ako by si to riesil ty. myslim si, ze samotny kod tej triedy mam spraveny dobre, len si nie som isty, ci je to spravne zakomponovane do toho webu - ci to nema byt riesene ako helper, alebo to zakomponovat do modelu a ci vobec je spravne, ze kniznica komunikuje s databazou. lebo pride mi, ze takto trochu straca zmysel model, kedze z modelu vyberiem iba id, to posuniem tej mojej funkcii na preklad a az ta vyberie z databaze konkretny text.

kód:
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Translate
{
var $user_language;
var $default_language;
var $CI;


    public function __construct(){
        $this->CI =& get_instance();
        $this->CI->load->helper('cookie');
        $this->user_language = get_cookie("lang");
        $this->default_language = $this->CI->config->item("default_language");
       
        if(!$this->user_language){
            $this->user_language = $this->default_language;
            set_cookie("lang", $this->default_language, time()+3600000);
        }
    }
   
    public function translate($item, $id){
        $query = $this->CI->db->query("SELECT translate FROM preklady WHERE item='$item' AND text_id='$id' AND language='$this->user_language'");
        if($query->num_rows() > 0){
            $translate = $query->result();
            return $translate[0]->translate;
        }
        else{
            return $this->get_default_translate($item, $id);
        }
    }
   
    private function get_default_translate($item, $id){
        $query = $this->CI->db->query("SELECT $item FROM stranky WHERE id='$id'");
        if($query->num_rows() > 0){
            $default_translate = $query->result();
            return $default_translate[0]->$item;
        }
        else{
            return "Sorry, no translate for this text - ".$item."_".$id;
        }
    }
   
   

}
Zobraziť informácie o autoroviOdoslať súkromnú správu
shaggy
Moderátor
Moderátor

Založený: 21.02.2006
Príspevky: 4627
Bydlisko: Bratislava

PríspevokZaslal: Po 09.01.12 17:23Odpovedať s citátomNávrat hore

Môžeš si urobiť vlastnú knižnicu, alebo rozšíriť tú, ktorá je súčasťou frameworku. Také menšie nakopnutie môžeš nájsť tu: http://codeigniter.com/wiki/Language_Class_Extended_DB

_________________
Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme.
Zobraziť informácie o autoroviOdoslať súkromnú správuOdoslať e-mailZobraziť autorove WWW stránky
Zobraziť príspevky z predchádzajúcich:    
Zaslať odpoveď
Nemôžete pridávať nové témy do tohto fóra.
Nemôžete odpovedať na témy v tomto fóre.
Nemôžete upravovať svoje príspevky v tomto fóre.
Nemôžete mazať svoje príspevky v tomto fóre.
Nemôžete hlasovať v tomto fóre.

Powered by phpBB 2.x.x © 2005 - 2012 PCforum, webhosting by WebSupport, edited by JanoF

SEO - optimalizácia pre vyhľadávače

Freebsd