Route::get('/', 'PagesController@index'); //Anasayfa Görünüm
Route::get('/anasayfa', 'PagesController@index'); //Anasayfa Görünüm
Register ettiğiniz route'ların her ikisi de PagesController@index methodunu çalıştırıyor. Yani aslında hiçbir zaman HomeController'daki yazmış olduğunuz method çalışmıyor. Hal böyle olunca da Undefined variable hatası alıyorsunuz.
HomeController'daki Categories() methodunun içeriğini PagesController@index e koymanız gerekiyor:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Categories;
class PagesController extends Controller
{
public function index()
{
$categories = DB::table('categories')->get();
return view('sayfalar.home', ['categories' => $categories]);
}
}
Ya da daha efektif bir şekilde scope kullanımı ile sorunu çözebilirsiniz:
Categories.php dosyasında
<?php
public static function scopeGetCategories()
{
$categories = Categories::all();
return $categories;
}
daha sonra PagesController'da
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Categories;
class PagesController extends Controller
{
public function index()
{
$categories = Categories::getCategories();
return view('sayfalar.home', compact('categories'));
}
}