/app/Http/Controllers/Components/MenuController.php Kodum Var
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
class MenuController extends Controller
{
public function render()
{
$jsonFilePath = storage_path('lang/languages.json');
$jsonData = file_get_contents($jsonFilePath);
$menuData = json_decode($jsonData, true);
return view('Components.Menu', compact('menuData'));
}
}
/resources/views/Components/Menu.blade.php
@foreach ($menuData as $language => $code)
<li class="w-sm-50 p-1">
<a href="#"
class="link d-inline-block dropdown-item clr-neutral-500 bg-neutral-20 :bg-neutral-20 rounded">
<span class="d-block fw-medium mb-1"> {{ $language }}
</span>
<span class="d-block fs-12 clr-neutral-70">
{{ $code }}
</span>
</a>
</li>
@endforeach
Undefined variable $menuData
bu hata neden çıkıyor ne eksik yapmış olabilirm
(Laraveli Daha Yeni Öğreniyorum)
Laravel İle Comonent Yapısı Nasıl Kurulur
7
●174
- 17-04-2024, 09:54:52Eğer languages.json laravel kendi dil dosyası içindeyse.JosephC adlı üyeden alıntı: mesajı görüntüle
onun çağırıken: file_get_contents(lang_path('languages.json '));
bu şekilde çağır. - 17-04-2024, 10:09:05Hata bundan kaynaklı da değil. Hata menudata değişkeni view dosyasına gitmiyor. Önce route içinde web.php bakın nasıl çağırıyorsunuz o sayfayı ona göre çözüm söyleyelim.gsahin adlı üyeden alıntı: mesajı görüntüle
- 17-04-2024, 10:12:17Bir Component Olduğu İçin web.php Nasıl Ekleyeceğimi Bilmiyorum Acaba Bir Örnek Gösterebilir misniz?blap adlı üyeden alıntı: mesajı görüntüle
- 21-04-2024, 02:03:36Hocam sırayla gidelim;JosephC adlı üyeden alıntı: mesajı görüntüle
1. Gereksiz sınıfları implement etmeyin. (6. satırı silin)
2. Exception sınıfını implement edin. (Sildiğimiz 6. satırdaki kodun yerine 'use Exception;' yazın)
3. Exception sınıfını dahil etmeyip kodu çalıştırdığınız için bi hata oluşuyor ve catch bloğu içine düşüyorsunuz. Burada da direkt return yaptığınız için view'a menuData değişkeni gönderilmiyor. Bunu çözmek için iki yolumuz var.
Birinci yol; view içindeki foreach öncesinde @if(isset($menuData)) kontrolü.
İkinci yol; controller içinde catch bloğunda viewi çağırdığımız yerde ['error' => 'Error decoding JSON data'] kodunu ['error' => 'Error decoding JSON data', 'menuData' => []] şeklinde değiştirme.
