Merhaba arkadaşlar öncelikle gösterdiğiniz ilgi için gerçekten çok teşekkür ederim :) Bugün View yapısı ve Controller ile çıkaracağımız sonucu Viewe göndermeyi öğreneceğiz. Benim en sevdiğim kısımlardan birisi bu kısım :)
Bir önceki derste belirttiğim gibi bir süre sabit route ve controllar yapısını kullanacağız. Bu derste geçen dersteki hazırladığımız Route ve Controllar ile biraz oynama yapacağız
Öncelikle View dosyalarımızın bulunduğu dizini inceleyelim
resources / views
Belirttiğimiz dizine girdiğinizde daha önce ilk kurulumundan değişiklik yapmadıysanız welcome.blade.php sayfasını göreceksiniz. Bu laravelin hoşgeldiniz sayfası bununla işimiz yok direkt silebilirsiniz. Buraya 4 adet view dosyası oluşturacağız. Bir önceki dersimizde Route yapısında 4 adet sayfa olacağını belirlediğimiz için şimdi de 4 adet View sayfası oluşturacağız ve Controllar içerisinde return ettiğimiz değerleri Viewe gönderip orada göstereceğiz.
anasayfa.blade.php , hakkimizda.blade.php , iletisim.blade.php , parametredenemesi.blade.php
İsimleri ile 4 tane View sayfalarını oluşturalım. Daha sonra Route sayfasını aşağıdaki gibi değiştirelim
Route::get('/', 'LaravelCont@anasayfa');
Route::get('/hakkimizda', 'LaravelCont@hakkimizda');
Route::get('/iletisim', 'LaravelCont@iletisim');
Route::get('/parametreDenemesi/{id?}', 'LaravelCont@parametreDenemesi');
LaravelCont adındaki Controllar sayfamızıda aşağıdaki gibi değiştirelim
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class LaravelCont extends Controller
{
public function anasayfa(){
return view('anasayfa');
}
public function hakkimizda(){
$title = "Hakkımızda";
$keywords = "Hakkımızda Anahtar Kelimeler";
$sayfa = "Hakkımızda Sayfasındayız";
return view('hakkimizda')->with('sayfaTitle' , $title)->with('sayfaKeywords' , $keywords)->with('sayfaIsmi' , $sayfa);
}
public function iletisim(){
$title = "İletişim";
$keywords = "İletişim Anahtar Kelimeler";
$sayfa = "İletişim Sayfasındayız";
return view ('iletisim' , compact('title' , 'keywords' , 'sayfa'));
}
public function parametreDenemesi($id=null){
if($id)
{
$deger = $id;
}else{
$deger = 'Parametre Değeri Bulunmamaktadır';
}
$title = "Parametre Denemesi";
$keywords = "Parametre Denemesi Anahtar Kelimeler";
$sayfa = "Parametre Denemesi Sayfasındayız";
return view ('parametredenemesi' , compact('title' , 'keywords' , 'sayfa' , 'deger'));
}
}
Son olarak oluşturduğumuz anasayfa.blade.php , hakkimizda.blade.php , iletisim.blade.php , parametredenemesi.blade.php sayfalarını düzenlememiz gerekecek. Sadece anasayfa.blade.php sayfasını aşağıdaki gibi yapıyoruz
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> Ana Sayfa </title>
<meta name="keywords" content="Ana Sayfa Anahtar Kelimeleri">
</head>
<body>
<a href="{{url('/')}}">Ana Sayfa</a>
<a href="{{url('/hakkimizda')}}">Hakkımızda</a>
<a href="{{url('/iletisim')}}">İletişim</a>
<a href="{{url('/parametreDenemesi')}}">Parametresiz Parametre Denemesi</a>
<a href="{{url('/parametreDenemesi/47')}}">47 Parametreli Parametre Denemesi</a>
<br/><br/><br/>
Ana Sayfadayız
</body>
</html>
hakkimizda.blade.php sayfasını ise aşağıdaki gibi yapalım
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> {!! $sayfaTitle !!} </title>
<meta name="keywords" content="{{ $sayfaKeywords }}">
</head>
<body>
<a href="{{url('/')}}">Ana Sayfa</a>
<a href="{{url('/hakkimizda')}}">Hakkımızda</a>
<a href="{{url('/iletisim')}}">İletişim</a>
<a href="{{url('/parametreDenemesi')}}">Parametresiz Parametre Denemesi</a>
<a href="{{url('/parametreDenemesi/47')}}">47 Parametreli Parametre Denemesi</a>
<br/><br/><br/>
{{$sayfaIsmi}}
</body>
</html>
Son olarak iletisim.blade.php , parametredenemesi.blade.php sayfalarını ise
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title> {!! $title !!} </title>
<meta name="keywords" content="{{ $keywords }}">
</head>
<body>
<a href="{{url('/')}}">Ana Sayfa</a>
<a href="{{url('/hakkimizda')}}">Hakkımızda</a>
<a href="{{url('/iletisim')}}">İletişim</a>
<a href="{{url('/parametreDenemesi')}}">Parametresiz Parametre Denemesi</a>
<a href="{{url('/parametreDenemesi/47')}}">47 Parametreli Parametre Denemesi</a>
<br/><br/><br/>
{{$sayfa}}
</body>
</html>
Ama parametredenemesi.blade.php sayfamıza body tagları içerisinde ki istediğiniz herhangi bir yere
<strong>Parametre Değerimiz :</strong> {{$deger}}
Kodunu da yerleştirelim ve ne yaptığımızı satır satır açıklamaya başlayalım.
Route dosyasındakilerin ne olduklarını zaten biliyorsunuz Controllar ile başlıyoruz. Controllar içerisinde anasayfa fonksiyonuna bakalım
return view('anasayfa');
Route anasayfa fonksiyonuna yönlendirdiğinde yukarıdaki kod ile istediğimiz view sayfasını return ediyoruz. Öncelikle ilk dikkat etmeniz gereken şey view ismi anasayfa.blade.php olduğu halde biz sadece anasayfa yazıyoruz. Sistemin kendisi .blade.php yazmamıza gerek olmadan zaten view klasörü içerisinde anasayfa dosyamızı buluyor.. Ana Sayfamızda herhangi bir değer göndermeden sadece viewi return etmeyi öğrenmiş bulunuyoruz.
Route hakkimizda fonksiyonuna yönlendirdiğinde ise 3 adet değişken oluşturmuşuz ve bunları aşağıdaki kod ile view'e göndereceğiz.
return view('hakkimizda')->with('sayfaTitle' , $title)->with('sayfaKeywords' , $keywords)->with('sayfaIsmi' , $sayfa);
yine return view kodu ile hakkimizda sayfasına gideceğini söylüyoruz ama bunun yanında ->with('sayfaTitle' , $title) ile değişkeni de göndereceğimizi söylüyoruz. Parantez içerisinde bulunan $title değeri Controllar içerisinde bulunan değişkenin adı sayfaIsmi değeri ise view de yazdıracağımız değişkenin adı olacaktır. Yani controllar içerisinde bulunan $title değeri view de $sayfaismi olarak gitmesini söylüyoruz.
Gördüğünüz gibi 3 adet değişken olduğu için 3 tane ayrı with yazmamız gerekiyor ama bunun da kolay yolu var bunun için iletisim fonksiyonunu incelemeye başlayalım
return view ('iletisim' , compact('title' , 'keywords' , 'sayfa'));
iletisim fonksiyonu içerisinde 3 adet ayrı with kullanmak yerine compact kodunu kullanıyoruz. With kullanımında değişkenin adını ayrı sayfada gösterilecek değişkenin adını ayrı ayrı belirtiyorduk biraz önce hakkimizda fonksiyonunda tanımladığımız gibi ama compact fonksiyonunda değişkenin adı Controllar içerisinde ne ise view içerisine de o şekilde göndermek zorunda kalıyoruz.
Eğer ki 1 den fazla değişkeniniz var ise ve değişkenin adı controllar içerisinde ne ise viewde de aynı olmasında sakınca yoksa ben compact kodunu el alışkanlığı yapmanızı tavsiye ederim
parametreDenemesi fonksiyonunda ise if ile parametre var mı yok mu diye kontrol edip sonucu $deger değişkenine atıyoruz. iletisim fonksiyonu haricinde $deger değişkenini de viewe göndereceğimizi compact içerisinde belirtiyoruz.
Controllar ile veri gönderimini öğrendik şimdi view içerisinde bu değerler nasıl okuyabiliriz onu öğrenelim. anasayfa.blade.php sayfamızda zaten veri gönderimi olmadı o yüzden hakkimizda.blade.php sayfamıza bakalım.
hakkimizda.blade.php dosyamızda kullanacağımız değişken adlarını $sayfaTitle , $sayfaKeywords , $sayfaIsmi olarak Controllar içerisinde belirledik. Sayfa içerisinde ki değişkenleri php komutu olan echo ile okuyabiliriz fakat .blade içerisinde böyle birşeye hiç gerek yok :)
{!! $degiskenAdi !!} veya {{ $degiskenAdi }} şeklinde view içerisinde değişken okumalarını yapıyoruz.
Viewler içerisinde tek yaptığımız şey Controllar içerisinde gönderdiğimiz değerleri okumak. Ayrıyeten ise Viewler içerisinde linkler oluşturduk a href içerisinde link belirlemeyi ise {{ url ('/hakkimizda') }} şeklinde yaptık bu da blade direktiflerinden biri
Bu dersimizde bu kadar anlamadığınız bir yer olursa veya bir hatam varsa lütfen yorum , sosyal medya veya telefon ile bana ulaşın :) Teşekkürler
Yorumlar