• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Laravel/voyager - wyciągnięcie listy kategorii do widoku

Object Storage Arubacloud
0 głosów
596 wizyt
pytanie zadane 26 października 2017 w PHP przez Daniel Śmigiela Nowicjusz (240 p.)

Witam. To mój pierwszy post na tym forum i właściwie pierwszy od kiedy zacząłem uczyć się laravela.

Stawiam pierwsza stronę małymi kroczkami cały czas się ucząc i utknąłem na być może banalnej kwestii.. 

Witryna zawiera moduł bloga, oparty na crudzie voyager. Wszystko współgra na localhoście z mysqlem(mariadb).

Jak wyprowadzić voyagerową liste kategorii do widoku ? 

Póki co odpuściłem i zająłem się pisaniem treści na stronę, ale męczy mnie to strasznie. Dodam, że pracuje na voyagerowych modelach, swój dopisałem jeden, którego voyager nie posiadał a był mi potrzebny - razem z kontrolerem i widokiem i działa pięknie, natomiast lista kategorii bloga ni chu chu nie chce działać. 

Do widoku próbowałem przekazać przez 

@foreach($post as $category)
{{post->category->title}}
@endforeach

natomiast controller był listujący wszystkie kategorie metodą index - nie mam jego zawartości, bo przez wkur... złość usunąłem.

Taka kombinacja sprawiła, że lista kategorii się pokazała, jednak tyle ile postów w danej kategorii, tyle razy dana kategoria pojawiła sie na liście.

Wiem/czuje, że robię to źle, a nie mogę trafić na jakiś zwięzły tutorial jak to zrobić, a jak trafiam na coś na YT to nie uwzględniają tam voyagera, więc musiałbym praktycznie większość kodu przepisać raz jeszcze a mija się to z celem, kiedy korzystam z gotowego cruda.

komentarz 27 października 2017 przez manjaro Nałogowiec (37,390 p.)
Tak z ciekawości z czego się uczysz?
komentarz 27 października 2017 przez Daniel Śmigiela Nowicjusz (240 p.)

wideokurs od strefy kursów oraz z kanału "od zera do web deva" .. jednak podszedłem do tego chyba troszkę nad wyrost, ponieważ zakładam sobie cel i chce go zrealizować szukając metod .. jednak bez znajomości mysql i php może to być bardzo trudne.

Znam html i css powiedziałbym dość dobrze, jednak laravel wydaje mi się czarną magią póki co:P zbyt wiele możliwości :) choć nie twierdzę, że nie opanuje.

a Ty możesz coś polecić do opanowania larvy ?;)

 

komentarz 27 października 2017 przez manjaro Nałogowiec (37,390 p.)
edycja 27 października 2017 przez manjaro

Bardzo dużo można się nauczyć z kanału DevMarketer Seria poradników do Larvy 5.3 5.4 5.5 Niestety po angielsku ale dość dobrze tłumaczy. Kurs 5.3 jest już mało aktualny ale warto go obejrzeć bo jest tam wiele praktycznych rozwiązań.

Próbowałem też oglądać Stanio ale koleś strasznie przynudza i mnie irytuje swoim stylem bycia.

komentarz 27 października 2017 przez Daniel Śmigiela Nowicjusz (240 p.)
Fakt, Stanio ma specyficzny sposób wypowiedzi, taki dość lazy :P ale ma dużą wiedzę i choć nie do końca trafia do mnie jej przekaz, to zawsze wyłapie sobie coś co może się przydać:)
komentarz 27 października 2017 przez event15 Szeryf (93,790 p.)
Z tą dużą wiedzą, to bym nie przesadzał. Na wszystkich swoich "kursach" robi wszystko w zakresie możliwym do przyswojenia w ciągu godziny z książką. I z książki myślę, że więcej wyciągniesz.

1 odpowiedź

0 głosów
odpowiedź 27 października 2017 przez Fenix Nałogowiec (26,750 p.)
edycja 27 października 2017 przez Fenix
@foreach($post as $category)

{{post->category->title}}

@endforeach

 

Jak masz $post as $category w petli foreach, dlaczego odnosisz się znowu do post a nie poprzez $category-title ?

Chociaż prawdopodobnie chodziło Ci o rozwiązanie,

 @foreach($post->category as $category)

{{$category->title}}

@endforeach
komentarz 27 października 2017 przez Daniel Śmigiela Nowicjusz (240 p.)
edycja 27 października 2017 przez Daniel Śmigiela

Dziękuję za szybką i treściwą odpowiedź. Specjalnie wstałem wcześniej żeby przetestować i chyba jeszcze śpie, ponieważ Twoje rozwiązanie zwraca mi errora:" Trying to get property of non-object "

ale do rzeczy. Tak wygląda mój kontroler:

  1. <?php

  2.  

  3. namespace App\Http\Controllers;

  4. use Illuminate\Support\Facades\DB;

  5. use Illuminate\Http\Request;

  6. use TCG\Voyager\Models\Category;

  7.  

  8. class CategoryController extends Controller

  9. {

  10.     public function index()

  11.         {

  12.  

  13.         $categories = Category::latest()->get();

  14.           $posts = $category->posts()::all;

  15.           return view('blog.index',compact('category'));

  16.         }

  17.  

a tak model Category voyagerowy:

  1. <?php

  2.  

  3. namespace TCG\Voyager\Models;

  4.  

  5. use Illuminate\Database\Eloquent\Model;

  6. use TCG\Voyager\Facades\Voyager;

  7. use TCG\Voyager\Traits\Translatable;

  8.  

  9. class Category extends Model

  10. {

  11.     use Translatable;

  12.  

  13.     protected $translatable = ['slug', 'name'];

  14.  

  15.     protected $table = 'categories';

  16.  

  17.     protected $fillable = ['slug', 'name'];

  18.  

  19.     public function posts()

  20.     {

  21.         return $this->hasMany(Voyager::modelClass('Post'))

  22.             ->published()

  23.             ->orderBy('created_at', 'DESC');

  24.     }

  25.  

  26.     public function parentId()

  27.     {

  28.         return $this->belongsTo(self::class);

  29.     }

  30. }

 Większość tego co robie jest wzorowane na czymś więc może być tak, że działam w sposób chaotyczny i niezrozumiały dla kogoś kto temat zna :) 

EDIT: przez konsole tinker przy odwołaniu do bazy przez 

$category = TCG\Voyager\Models\Category::get();

normalnie listuje mi moje kategorie. jednak nie potrafię ich przekazać do widoku

komentarz 27 października 2017 przez CenterPL Pasjonat (19,070 p.)
błąd mówi, jak pewnie zauważyłeś, że chcesz wyciągnąć wartość pola z czegoś, co nie jest obiektem. Nie znam Laravela, ale znajomość PHP naprawdę pomaga - otóż wygląda na to, że Twój "obiekt" jest tablicą pewnie. próbuj więc $category['title'] a najlepiej po prostu z dumpuj sobie zmienną i sprawdź co tam masz.

Podobne pytania

0 głosów
1 odpowiedź 261 wizyt
0 głosów
0 odpowiedzi 646 wizyt
0 głosów
3 odpowiedzi 339 wizyt
pytanie zadane 30 października 2017 w C i C++ przez Dorian Bajorek Dyskutant (7,920 p.)

92,596 zapytań

141,445 odpowiedzi

319,718 komentarzy

61,980 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...