drWeb Merhaba, foruma hoşgeldiniz. Kodlarınızı bu seferlik ben düzelttim, bir dahaki sefere düzgün eklemenizi rica ediyorum. Şu konuyu inceleyin lütfen:
https://laravel.gen.tr/d/4903-onemli-forumda-kod-paylasirken-dikkat-edilmesi-gerekenler
Laravel'e balıklama atladığınız doğru çünkü belli ki dokümanlara bakma gereği hissetmemişsiniz. Udemy'deki kursların bazısına baktım, bu kurslar size dokümanları kabaca anlatıp para kazanmaya çalışan insanların kursları. Bir şey anlatmadıkları gibi kursiyeri de yanlış yönlendiriyorlar.
Controller gelen HTTP isteğine göre işlem yaptırdığınız sınıftır. İstek olmadan çalışmayacaktır (Sonuçta bir PHP sınıfı olduğu için çalıştırmanın elbette yolu var ama bu konu dışı.) Slider şeklinde bir controller yazmışsınız (Takip ettiğim bazı standartlar olduğu için adının SliderController olması gerekiyor. Model adı olarak da SliderModel yazmışsınız, onun da sadece Slider olması gerekiyor. Elbette mecbur değilsiniz, ne isterseniz yazın.) Slider::sliders() yönteminin çalışabilmesi için routes/web.php (ya da alakalı ise diğer rota dosyaları) içinde bir rota tanımlanmış olması lazım. Örneğin:
Route::get('sliders', [Slider::class, 'sliders']);
Böylece domain.com/sliders şeklinde bir istek gelince çalışacak. Sizin böyle bir isteğiniz olmayacağı için burada yanlış yapmışsınız.
İkinci olarak homepage.blade.php şeklinde bir dosyanız var diğer şablonları bu dosyanın içine @include ile gömmüşsünüz. Controller dosyanızda ise gömülü olan slider.blade.php dosyasına veri göndermeye çalışmışsınız. Burada controller'dan veri gönderebileceğiniz şablon homepage çünkü controller'dan direkt sadece ana şablona veri gönderebilirsiniz (bunun da yolları var ama dediğim gibi konu dışı) ve homepage de burada ana şablon olmuş oluyor. Ana şablondan ise @include ile gömülmüş şablona veriyi aktarmanın yolu var. Mesela:
@include('frontend.include.slider', ['slider' => $slider])
İstediğiniz arayüzü oluşturmak için birden fazla yol var. Bunlardan biri:
Route::get('/', [HomeController::class, 'index'])
->name('home');
class HomeController extends Controller
{
public function index()
{
$slider = Slider::all();
$menu = Menu::all():
$popularGames = Game::popular()
->take(5)
->get();
return view('homepage', compact('slider', 'menu', 'popularGames'))
}
}
homepage.blade.php:
@include('frontend.include.slider', ['slider' => $slider])
@include('frontend.include.centermenu', ['menu' => $menu])
@include('frontend.include.homepage_gameslider_popular', ['games' => $popularGames])
Bu şeklide bir ana sayfa oluşturabilirsiniz. Bunların dışında componentler ve view composer yöntemleri var. Dokümanlardaki bilgi başlangıç için yeterli:
https://laravel.com/docs/8.x/controllers
https://laravel.com/docs/8.x/blade
https://laravel.com/docs/8.x/views