Autorius Tema: Padėkite sugalvoti sistemos flow su cakephp  (Skaityta 1880 kartus)

Neprisijungęs Haris

  • Dalyvis
  • **
  • Įrašai: 833
  • Karma: +56/-0
    • Žiūrėti profilį
    • www.RubikoKubas.Lt
Padėkite sugalvoti sistemos flow su cakephp
« Įrašytas: 2014-09-08 15:47:15 pm »
Sveiki,
Neseniai pradėjau mokintis kepti appsus su cakePHP ir apskritai kažką pirmą kartą darau su MVC.
Tai va, susigalvojau išsikepti pirmą piragą - RTS žaidimą. Ir nebeišmastau kaip teisingai, pagal MVC ir cakePHP standartus, sudėlioti sistemą.

Paprastai kalbant as noriu padaryti, kad paspaudus patobulinti pastata, man jo statyba idetu i eile, praejus statybos laikui ji pasalintu is eiles.

Dabar, sakykim, turiu 3 modelius: Resource, Queue, Building. Ir is index puslapio as su ajaxu kreipiuosi i Queues kontroleri, ten is componento issikvieciu ResourceCalc($buildingLvl) ir jis man returnina kiek kainuos resursu pagal lygi. Tada irasau i Queue modeli pastato statyba. Ir dabar sustojau ties resursu nuemimu. Kaip man butu protingiau tai padaryti? Tiesiog Queues controllerije daryti requestAction i Resources controlleri? ar galima sita situacija protingiau suzaisti? As manau, kad resursus turetu nuimti idejus i eile, jeigu pvz atsauktu statyba as vel per resourceCalc() pereiciau ir grazinciau resursus.

Ir paskutinis dalykas. Ar butu teisinga deti tikrinima, ar pastatas jau pastatytas ar ne, i AppControlleri i beforeFilter() metoda, ir is ten su requestAction kreiptis i atitinkama controlleri t.y. pasalinti is eiles, +1 pastato lygis, jeigu tai pavyzdziui kariai, tai prideti n skaiciu kariu prie kariuomenes ?

Neprisijungęs ganjabest

  • Dalyvis
  • **
  • Įrašai: 968
  • Karma: +41/-1
  • Povilas Stankevičius
    • Žiūrėti profilį
Ats: Padėkite sugalvoti sistemos flow su cakephp
« Atsakymas #1 Įrašytas: 2014-09-09 02:10:11 am »
Cia priklauso nuo to kokius modelius turi. Jeigu skaiciuoji resursus viska dedi i resursu modeli, statybas i statybu modeli ir t.t. Ir tikrai nemaisyk kas kur papuola, nes po to nerasi nieko kaip reikes. O kontroleris tam ir skirtas, kad paemus is skirtingu modeliu duomenis juos galima butu apdoroti ir atvaizduoti iterpiant dar ir helperius ar siaip kokias bibliotekas. Tarkim dirbi kontroleryje:
<?php
$building_data 
$this->Shop->gautiPirkinioInformacija($pirkinio_id);

if (
$this->Resource->nuskaiciuotiResursus($building_data) && $this->Building->pridetiNaujaStatybuProcesa($building_data)) {
    
//daryti kazka toliau
}
?>

Na, cia funkcijos del vaizdo parodytos, kad kazkiek suprasum, ka noriu pasakyti. Su vienu modeliu atlik veiksmus skirtus tik vienai lentelei duomenu bazeje ir t.t. juolab, kad CakePHP turi pagal nutylejima CRUD funckijas, kurias naudoji atskirai kiekvienam modeliui(lentelei). Visada pries darydamas kazka pradek nuo db strukturos. Ir kaip turesi lenteles jau tada daryk veiksmus.
Kas liecia statybas as tureciau visa atskira lentele duomenu bazeje skirta joms su visa isaugota uzsakymo "data", kad reikalui esant(atsaukiant ir t.t.) galima butu paimti ta "data" ir reikiamai apdoroti(grazinti i vietas ir t.t.). Kiekvienam uzsakymui(pastato lvl) iterpciau vis atskra eilute, tik vis statusa keisciau pagal tai ar jau pastatyta ar ne. Tada ir istorija galetum matyti ir satymo metu matyti koks paskutinis lvl jau yra pastatytas. Tiesiog kaip eilinis orderis e-shopo sistemoje.
Tikrinima irgi dek i building modeli tiesiog. Nu ta prasme nezinau kaip tikrinsi. Ar su socket kazkaip live viskas vyksta ar tik po refresh'o. Jeigu po refresho, tai tiesiog iterpi eilute papildomu kodu, kuris kreipias i building modeli tikrindamas reiksmes pagal parametrus ir t.t. O jeigu kazkaip live viskas vyksta, tai atskiras funkcijas reiktu daryti. Gal net atskirus kontrolerius, kur visokios ajax funkcijos.
« Paskutinį kartą keitė: 2014-09-09 02:45:12 am sukūrė ganjabest »
Visi žmonės kaip žmonės - tik aš vienas kaip dievas!

Neprisijungęs Haris

  • Dalyvis
  • **
  • Įrašai: 833
  • Karma: +56/-0
    • Žiūrėti profilį
    • www.RubikoKubas.Lt
Ats: Padėkite sugalvoti sistemos flow su cakephp
« Atsakymas #2 Įrašytas: 2014-09-17 19:11:14 pm »
Ačiū už atsakymą. Tikrai padėjo :)

Beje, nepaprasčiau būtu vietoj papildomo controllerio ajax requestam, tiesiog tame pačiame Buildings controllerije tikrinti su requestHandleriu koks requestas atejo ir suformuoti json response'ą ir renderenti view kuris atvaizduoja jsoną? Taip butu galima su vienu controlleriu padaryti tikrinimus ir su refreshu, ir live.

Neprisijungęs ganjabest

  • Dalyvis
  • **
  • Įrašai: 968
  • Karma: +41/-1
  • Povilas Stankevičius
    • Žiūrėti profilį
Ats: Padėkite sugalvoti sistemos flow su cakephp
« Atsakymas #3 Įrašytas: 2014-09-18 00:01:51 am »
Ačiū už atsakymą. Tikrai padėjo :)

Beje, nepaprasčiau būtu vietoj papildomo controllerio ajax requestam, tiesiog tame pačiame Buildings controllerije tikrinti su requestHandleriu koks requestas atejo ir suformuoti json response'ą ir renderenti view kuris atvaizduoja jsoną? Taip butu galima su vienu controlleriu padaryti tikrinimus ir su refreshu, ir live.

Nu turbut taip teisingiau daryti, nei i atskirus failus deti kaip minejau. Paciam lengviau suprasti, nereikes funkcijos rasyti du kartus(jeigu abiem atvejais tau ji reikalinga) ir gelbeja nuo to atvejo, jeigu pas zmogu isjungtas javascriptas(kas mazai siais laikais tiketina, bet vistiek priklauso taip daryti).  Tik vat ziurint kaip ka naudosi.
Tarkim su ajax'u tu gali iskviesti bet kurio kontrolerio funkcijas, o refreshinant, tik to kuriame esi. Todel pabreziu, tokiu atveju protingiausia skaiciavimams tureti atskiras bibliotekas, o ne atlikti skaiciavimus paciame kontroleryje ir tada nekils problemu iskvietinejant tas funkcijas is bet kurios vietos. Nes, tarkim, tiesiogiai is User kontrolerio neiskviesi Building kontrolerio funkcijos, kas su ajax'u butu dar imanoma.
Visi žmonės kaip žmonės - tik aš vienas kaip dievas!

Manualai.lt Forumas

Ats: Padėkite sugalvoti sistemos flow su cakephp
« Atsakymas #3 Įrašytas: 2014-09-18 00:01:51 am »