Pereiti prie turinio

Dalinuosi eshop parašyta su laravel framework [UPDATED]


Rekomenduojami pranešimai

UPDATED: Įdėjau mokėjimus, šiek tiek kodas patvarkytas, įdėta apsauga prekių pridėjime, atnaujinime ir pašalinime.

 

UPDATED: Nu va prisiverčiau, atnaujinti viską į anglų kalbą, išties kitas vaizdas dabar :)

 

UPDATED: Dar vienas atnaujinimas iš neturėjimo ką veikti :D , pridėjau admin panelę (per demo dėl saugumo išjungiau trinimą, kūrimą ir redagavimą). Po to krepšelį perdariau, padariau, kad prekes saugotu sesijose, o į duomenų bazę jau tik įrašytų, kaip žmogus užsisako (suveda duomenis ir pnš.). Kai kur funkcijas būtų galima optimizuoti, bet čia ateityje + negerai darau, kaip vienas žmogus sakė, kad ne angliškai klases vadinu ir pnš. (blogas įprotis :D). Pridėjau savo helperį (libs/Helper.php) kuriame tiesiog išvedu žmogaus IP ir "slug" padarymo funkciją (matosi kuriant naują prekę ar kategorija, vedant pavadinimas, automatiškai ir slug pasidaro iš pavadinimo).

 

UPDATED: šiek tiek kodą patvarkiau, labiau MVC way, palikau BaseController švaresni, šiek tiek view'us atnaujinau, padariau, kad title rodytu (ačiū View::Share metodui) ir daug smukių pakeitimų, ateityje jau žadu su administracija padaryti ir bandyt su mokėjimai.lt surišti.

 

Vakarais neturėdamas ką veikti, nusprendžiau padaryti kažką "rimtesnio", tas rimtesnio, nepasakyčiau, kad kažkas jau labai rimto, tiesiog paprastas ešopas su pagrindinėm funkcijom (prekės, kategorijos, krepšelis) su laravel frameworku. Admin nedariau ir nebaigiau krepšelio visiškai iki galo ir jame vienas bugas yra, nes kažkaip nekyla noras jo gaminti, bet gal kada ir jį pagaminsiu ir užbaigsiu, tiesiog dabar jau vakarai ne tokie laisvi.

O dalinuosi, dėl to gal tai padės naujokam kažkiek labiau susipažinti su MVC ir pamatyti koks laravel nuostabus, o patyrę programuotojai pasakys kokias klaidas padariau (žinau, yra nemažai(o galbūt viskas yra blogai :D ) kvailų sprendimų panaudota)

 

 

Github nuoroda

 

Norėdami įsirašyti ir pasileisti, reikės app/config/database.php nustatyti mysql prisijungimus, įsikelti sql failą. Po kol kas dar nedariau su seeding ir migration, bet ateityje ir juos įdėsiu.

Redagavo Arvis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

nuo kokio karkaso peršokai ant laravel?

 

Pačius pagrindus MVC išmokau su codeIginiter, tačiau palyginti su laravel, kažkaip paprasčiau jame yra viskas, vien Eloquent ORM man labai patinka laravel, daug laiko sutaupo, nereikia pačiam rašytis modelyje visus paėmimus ir įterpimus į duombaze

Redagavo Arvis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Keli pastebėjimai iš mano pusės.

1)Niekas nemeta rar'o su vendoriais;

2)Contollerius, klases, failus, namespace vadink anglškai;

3)Rašyk DB seederius ir migracijas, o ne dumpink viską į vieną SQL failą;

4)Naudok before filtrus, apskritai jokios apsaugos nepastebėjau.

5)Venk tokių dalykų kaip "pakeisk ten truputi javascript'e kodą, kad veiktų" :)

6)Base controlleryje kažkoks bardakas, reiktų praktiškai viską kelti į kokį servisą.

7)Gyvenimo pasilengvinimuj, kaip minimum patariu naudot ardent, dbugbar, ide-helperi :)

 

Čia pora pastebėjimų iš mano pusės, šiek tiek užmetus akį į kodą, nežiūrėjau nei DB nk, nes realiai dar labai yra kur tobulėt ir apie šito kodo panaudojimą, tai nlb gali būt minčių :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

visiškai nėra tikslo, jeigu nėra ketinama jo plėtoti, nes jis netgi nebaigtas. Šiuo atveju git būtų geriau tik tuo, kad lengviau peržvelgti failus

 

Būtent dėl to ir verta kelti į GitHub. O be to, galbūt kažkas kitas nutars pabaigti ar praplėsti sistemą, todėl nereiktų taip kategoriškai teigti, jog tikslo nėra.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Keli pastebėjimai iš mano pusės.

1)Niekas nemeta rar'o su vendoriais;

2)Contollerius, klases, failus, namespace vadink anglškai;

3)Rašyk DB seederius ir migracijas, o ne dumpink viską į vieną SQL failą;

4)Naudok before filtrus, apskritai jokios apsaugos nepastebėjau.

5)Venk tokių dalykų kaip "pakeisk ten truputi javascript'e kodą, kad veiktų" :)

6)Base controlleryje kažkoks bardakas, reiktų praktiškai viską kelti į kokį servisą.

7)Gyvenimo pasilengvinimuj, kaip minimum patariu naudot ardent, dbugbar, ide-helperi :)

 

Čia pora pastebėjimų iš mano pusės, šiek tiek užmetus akį į kodą, nežiūrėjau nei DB nk, nes realiai dar labai yra kur tobulėt ir apie šito kodo panaudojimą, tai nlb gali būt minčių :)

 

 

Didelis ačiū už pastabas, dėl before filtrų, tai jooo, visai juos užmiršau :)

 

P.S. kas tingi siųstis ir žiūrėti kodą, gali per github dabar pažiūrėti:

http://goo.gl/AsdfTB

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 1 mėnesio...

UPDATED: Dar vienas atnaujinimas iš neturėjimo ką veikti :D , pridėjau admin panelę (per demo dėl saugumo išjungiau trinimą, kūrimą ir redagavimą). Po to krepšelį perdariau, padariau, kad prekes saugotu sesijose, o į duomenų bazę jau tik įrašytų, kaip žmogus užsisako (suveda duomenis ir pnš.). Kai kur funkcijas būtų galima optimizuoti, bet čia ateityje + negerai darau, kaip vienas žmogus sakė, kad ne angliškai klases vadinu ir pnš. (blogas įprotis :D). Pridėjau savo helperį (libs/Helper.php) kuriame tiesiog išvedu žmogaus IP ir "slug" padarymo funkciją (matosi kuriant naują prekę ar kategorija, vedant pavadinimas, automatiškai ir slug pasidaro iš pavadinimo).

Nuoroda į pranešimą
Dalintis kituose puslapiuose

1. Labai sunku skaityt kodą, kai kintamųjų pavadinimai tokie netvarkingi. Vienur lietuviškai, kitur angliškai. Kas per kintamojo pavadinimas $masyvas? :) Tai pats pirmas dalykas, kuris krenta į akį. Tai yra labai svarbu kodo tvarkingumo atžvilgiu. Kintamųjų pavadinimai turi būti informatyvūs. Geriau naudok angliškus pavadinimus (ne tik kintamiesiems, bet ir modeliams, kontroleriams - visur).

 

2. Modelių pavadinimai turi būti vienaskaitoje, tada nereikės visur setinti properčio $table (ir vėl gi - angliški).

 

3. https://github.com/uikolas/Simple-Laravel-eshop/blob/master/app/controllers/KrepselisController.php#L36 . Gali naudoti metodą fill, kuris iškarto užsetins reikiamus atributus, o ne po vieną setinti ir pastoviai kviesti Input::get(). Tam, kad galėtum atlikti mass assignment, modelyje turi nurodyti, kuriuos laukus leidi settinti tokiu budu (pasinaudojant properčių $fillable).

 

Ir šiaip daug kitų dalykų yra. Gal pažiūrėčiau įdėmiau, bet neužtenka kantrybės skaityti pusiau lietuvišką kodą :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

1. Labai sunku skaityt kodą, kai kintamųjų pavadinimai tokie netvarkingi. Vienur lietuviškai, kitur angliškai. Kas per kintamojo pavadinimas $masyvas? :) Tai pats pirmas dalykas, kuris krenta į akį. Tai yra labai svarbu kodo tvarkingumo atžvilgiu. Kintamųjų pavadinimai turi būti informatyvūs. Geriau naudok angliškus pavadinimus (ne tik kintamiesiems, bet ir modeliams, kontroleriams - visur).

 

2. Modelių pavadinimai turi būti vienaskaitoje, tada nereikės visur setinti properčio $table (ir vėl gi - angliški).

 

3. https://github.com/uikolas/Simple-Laravel-eshop/blob/master/app/controllers/KrepselisController.php#L36 . Gali naudoti metodą fill, kuris iškarto užsetins reikiamus atributus, o ne po vieną setinti ir pastoviai kviesti Input::get(). Tam, kad galėtum atlikti mass assignment, modelyje turi nurodyti, kuriuos laukus leidi settinti tokiu budu (pasinaudojant properčių $fillable).

 

Ir šiaip daug kitų dalykų yra. Gal pažiūrėčiau įdėmiau, bet neužtenka kantrybės skaityti pusiau lietuvišką kodą :D

 

Ačiū už pastabas :) taip ir pačiam dabar negražu žiūrėti, kaip yra maišalynė LT ir EN kintamieji ir pnš. :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 3 savaičių...

Šiaip prie tos pačios temos paklausiu :) čia kalbat kad controller'ius reik vadinti angliškai, tačiau klausimas kaip tuomet padaryti lietuviškus breadcrumb'us? URL bus user/settings o breadcrumb turėtų būti Vartotojas/nustatymai. Kai angliškas controller'io pavadinimas ir angliška svetainė, šitą nesunku padaryti imant URI segmentus, tačiau klausimas kaip tą daryti daugiakalbėje sistemoje? Kokie pasiūlymai būtų iš daugiametę patirtį turinčių programuotojų? Talpinti segmentus duomenų bazėje su jų vertimais?

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 2 mėnesių...

Kaip man nepatinka laravelije tie view make: admin.items.create,admin.kazkas.create...kodel nera kad butu defaultiniai pagal controllerio/action name, o prireikus nurodytum koki viewsa uzkraut (tas cakePHP labai gerai padaryta). Kitas dalykas url formavimas irgi visur reikia nurodyt vos ne visa kelia iki to pacio controllerio ir to pacio actiono. Kodel visur rasyt Redirect::to('/admin/prekes') Redirect::to('admin/prekes/'.$id.'/edit') Redirect::to('admin/prekes/create')... Kodel defaultiskai negaletu jeigu tu nenurodai prefixo ar controlerio,tai imti ta prefixa kuriam sedi ir ta controlleri kuriam sedi, o nurodyt tik action (edit/create etc.), nafik reikia viska kopijuoti. Uzknisa kai adminkei controlleriai vos ne tas pats kodas, o keitinet reikia ir linkus redirectu ir viewsus keisti, ir viewsuose keisti linkus edit,add ir .t.t. cakePHP tas praspresta ryskiai geriau. Be to ir funkcijos normalios ner kad isgaut controllerio , action name, tenka stringus skaldyt. O ta Stringa suskaldyta suformatuot penkiais budais, nes view make reikia per taska rasyt kaip suprantu, linkus per slasha...kazkokia xujnia.

Redagavo kaunomanas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip man nepatinka laravelije tie view make: admin.items.create,admin.kazkas.create...kodel nera kad butu defaultiniai pagal controllerio/action name, o prireikus nurodytum koki viewsa uzkraut (tas cakePHP labai gerai padaryta). Kitas dalykas url formavimas irgi visur reikia nurodyt vos ne visa kelia iki to pacio controllerio ir to pacio actiono. Kodel visur rasyt Redirect::to('/admin/prekes') Redirect::to('admin/prekes/'.$id.'/edit') Redirect::to('admin/prekes/create')... Kodel defaultiskai negaletu jeigu tu nenurodai prefixo ar controlerio,tai imti ta prefixa kuriam sedi ir ta controlleri kuriam sedi, o nurodyt tik action (edit/create etc.), nafik reikia viska kopijuoti. Uzknisa kai adminkei controlleriai vos ne tas pats kodas, o keitinet reikia ir linkus redirectu ir viewsus keisti, ir viewsuose keisti linkus edit,add ir .t.t. cakePHP tas praspresta ryskiai geriau. Be to ir funkcijos normalios ner kad isgaut controllerio , action name, tenka stringus skaldyt. O ta Stringa suskaldyta suformatuot penkiais budais, nes view make reikia per taska rasyt kaip suprantu, linkus per slasha...kazkokia xujnia.

 

Route::currentRouteName();

Route::currentRouteAction();

Redirect::route('preke.create');

Redirect::route('preke.edit', array($id));

 

Routes nėra blogas dalykas. Jais reikia naudotis. Ir jei tas pats kodas, ne veltui yra extendinimas PHP. Labai daug kodo galima sutaupyt base funkcionalumus išsikeliant į kažkokį "base" controllerį. Laravelyje tikrai daug viso, ką galima panaudot. Ne viskas dokumentuota kolkas, bet panagrinėjus kodą... :) Jei neklystu View::make gali rašyt ir per slašą. Technikos klausimas ką ten padėsi ar tašką ar slašą. Aš tai visur taškus dedu be išimčių. Nebent ne routed linko kažkokio reikia (taip praktiškai nebūna).

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 4 mėnesių...
  • po 2 savaičių...

Atlikus apmokėjima būsena pasikeičia į Apmokėta ? ir apmokėjus užsakovas gauna el.laiška kad apmokėta gerai ?

 

Net nepamenu tiesa sakant, kaip čia padaryta su tais mokėjimais :D

Kad pasikeičia, tai jo, bet į emailą nieko nesiunčiu rodos

 

EDIT: Pagal kodą, tai callback nieko nedaro :D

Redagavo Arvis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...