Eno vprašanje glede Laravel 5
 
thai 26. maj 2015 09:02:34 Pridružen od:
14. dec 2014
81 objav
32 31 2
#1

Recimo ustvarim en model in ga kličem/inicializiram v controllerju tako, da mu zapišem atribute. Ti se jasno prenesejo v _construct od Eloquent modela (ne mojega modela ampak onega privzetega extendanega, ker v mojem modelu nimam _construct()), ki pa naredi kaj? Vse te vrednosti zapiše v polje $attributes, ne?



Recimo sedaj pa v controllerju preko modela ustvarim še neke nove lastnosti (preko setters) in Laravel v ozadju spet samodejno vse te lastnosti vrže v lastnost/polje $attributes (doda jih že obstoječim), ne?



Ko poženem metodo save() pa se izvede query točno na podlagi vrednosti iz $attributes, ne?



Upam, da sem bil dovolj jasen, drugače lahko dam kak primer, da bo bolj razumljivo ampak je kar nekaj kode, pa se mi ni dalo v prvo vse kopirati :P


všeč(0) ni všeč(0) spam(0)
*Uporabniku je bila prepovedana uporaba foruma zaradi večih uporabniških računov, ki so po [pravilih obnašanja](/pravila.html) prepovedani.*
 
bostjan 26. maj 2015 10:24:22 Pridružen od:
31. jul 2008
643 objav
689 30 9
#2

  1. sprašuješ kaj laravel dela v ozadju ali v čem točno je problem? (ti kaj ne dela, ali vse dela pa te samo zanima če mora tko delat?)

  2. prilepi kodo (ne tukaj ampak na nek paste recimo: http://laravel.io/bin)


všeč(1) ni všeč(0) spam(0)
 
thai 26. maj 2015 10:59:32 Pridružen od:
14. dec 2014
81 objav
32 31 2
#3

Vse dela tako kot mora, samo zanima me zakaj dela ;)



Koda je iz tega vodiča https://laracasts.com/series/build-your-first-app-in-laravel/episodes/9



V bazo želimo zapisati združene podaatke iz session + podatke iz request.



Imamo model Notice in NoticesController.



NoticesController.php


public function store(Request $request) {

$this->createNotice($request);

return redirect('notices');
}

private function createNotice(Request $request) {
$data = session()->get('dmca');

$notice = Notice::open($data)->useTemplate($request->input('template'));

return $notice;
\Auth::user()->notices()->save($notice);
}

Notice model


public static function open(array $attributes) {
return new static($attributes);
}

public function useTemplate($template) {
$this->template = $template;

return $this;
}

Zanima me tale koda...


$notice = Notice::open($data)->useTemplate($request->input('template'));

Torej najprej inicializiramo Notice objekt, mu damo argument $data (podatki se pošljejo v _construct in tu se vsebina zapiše v Laravel $attributes polje?), potem poženemo ustvarjeno useTemplate() metodo, katere podatke zapišemo v $this->template = $template; torej lastnost $template. V ozadju pa tudi te podatke Laravel priključi polju $attributes? Verjetno preko setters, ker jasno $template nimamo definirano zato se zažene magic method _set(), ki te podatke (verjetno) zapiše v $attributes? Na koncu pa lepo celotno polje $attributes Laravel uporabi za formacijo query (save()). Si prav predstavljm ali je kje napaka? V vodiču Jeffrey ni šel ravno v preveč detajle.



Seveda je zgornja koda po moje brezveze zakomplicirana, ker bi se dalo vse skupaj enostavno zapisati kot


$notice = session()->get('dmca') + ['template' => $request->input('template')];

kar je tudi prikazano v naslendjem vodiču.


všeč(0) ni všeč(0) spam(0)
*Uporabniku je bila prepovedana uporaba foruma zaradi večih uporabniških računov, ki so po [pravilih obnašanja](/pravila.html) prepovedani.*
 
thai 26. maj 2015 11:02:45 Pridružen od:
14. dec 2014
81 objav
32 31 2
#4

Pa ker mam občutek, da obvladaš, bi te še nekaj vprašal :)



Zgoraj kjer smo z open() inicializirali objekt, torej bi lahko zapisali na primer tudi



$notice = new Notice->useTemplate($request->input('template')); ali tole ne bi šlo in bi morali zapisati



$notice = new Notice;

$notice->useTemplate($request->input('template'));



(saj vem, da bi lahko tudi sam preveri ampak vseeno vprašam)


všeč(0) ni všeč(0) spam(0)
*Uporabniku je bila prepovedana uporaba foruma zaradi večih uporabniških računov, ki so po [pravilih obnašanja](/pravila.html) prepovedani.*
 
bostjan 26. maj 2015 13:17:21 Pridružen od:
31. jul 2008
643 objav
689 30 9
#5

No saj si kar natančno opisal kaj dela :)

Ker vidim da gledaš laracast. Stran je res odlična....toda.....pazi malo koliko v globino njegovih zadev greš. Da ne boš potem nekaj uporabljal samo zato ker je Way tako rekel.



Recimo tole poimenovanje konstruktorja jaz ne bi šel delat. Ne vidim pointa (in kot Way omeni, je to samo neko logično poimenovanje konstruktorja.....kaj za hudiča pa konstruktorju fali). Lahko bi dal tako kot si rekel:


$notice = (new Notice())->useTemplate($request->input('template'));

Če rabiš gledat kako gre v droboje imaš prov zato serijo "Advanced Eloquent". Sam jo še nisem pogledal in ne vem koliko razloži.


všeč(2) ni všeč(0) spam(0)
 
thai 26. maj 2015 18:02:57 Pridružen od:
14. dec 2014
81 objav
32 31 2
#6

Se mi je zdelo, da je nekaj takšnega. Hvala za potrditev ;) Se še učim Laravel in OOP pa se še malo lovim.



Tudi meni se zid, da je tole z open() nepotrebno, se pa vsaj naučiš nekaj novega. Advanced Eloquent pride pa še na vrsto :)


všeč(0) ni všeč(0) spam(0)
*Uporabniku je bila prepovedana uporaba foruma zaradi večih uporabniških računov, ki so po [pravilih obnašanja](/pravila.html) prepovedani.*
 
bostjan 26. maj 2015 19:24:08 Pridružen od:
31. jul 2008
643 objav
689 30 9
#7

ja Jeffery rad kje malo pretirava. Oz....pač ti pokaže opcijo kako se to lahko naredi, ne pravi pa, da moraš ti tako naredit.



Če greš poslušat podcaste Taylor lepo prizna, da njegovi projekti tako rekoč nimajo repozitorijev. Ker jih pač ne rab, pa tudi če vsi samo še o tem govorijo.



Če bo pa še kaj, pa kar vpraš.


všeč(1) ni všeč(0) spam(0)
 
thai 27. maj 2015 19:24:11 Pridružen od:
14. dec 2014
81 objav
32 31 2
#8

Imam še eno težavo. Sicer ni neposredno povezava z Laravel ampak verjetno prej z administracijo strežnika.



Ko želim poslati kakšen email preko Mandrill (guzzlehttp/guzzle:~5.0 seveda nameščen), se mi izpiše spodnja napaka





Odpraviti sem jo poskusil s temle navodil ampak žal brez uspeha (zapis sem dodal v php.ini od apache - ne od php)



http://stackoverflow.com/questions/21114371/php-curl-error-code-60



Uporabljam Win 7, WAMP 2.4.



curl nastavitve, če komu kaj pomaga





Ve kdo v čem je problem? Saj vem, da bi na strežniku verjetno vse delovalo ampak bi rad uredil tako, da mi bo tudi na localhost.


všeč(0) ni všeč(0) spam(0)
*Uporabniku je bila prepovedana uporaba foruma zaradi večih uporabniških računov, ki so po [pravilih obnašanja](/pravila.html) prepovedani.*
 
SlimDeluxe 28. maj 2015 06:31:32 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#9

Pa imaš ta certifikat in pravilno pot do njega zapisano?


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
OvcaX 28. maj 2015 07:17:22 Pridružen od:
24. avg 2007
2753 objav
4575 1194 281
#10

To ma Wamp težavo.

SI downloadal root cert dol ali samo odkomentiral vrstico?


všeč(0) ni všeč(0) spam(0)
CEO@Humanfrog & CEO@Junai
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se