laravel öğrenme notları

30 Haziran 2014 "laravel öğrenmek için, illk adımlar, laravel kurulum notları."

oncelikle composer'i install edelim:

curl -sS https://getcomposer.org/installer | php

Eğer sisteminizde suhosin patch varsa, aşağıgaki gibi bir hata verecektir,

"Some settings on your machine make Composer unable to work properly.
Make sure that you fix the issues listed below and run this script again:

The suhosin.executor.include.whitelist setting is incorrect.
Add the following to the end of your `php.ini` or suhosin.ini (Example path [for Debian]: /etc/php5/cli/conf.d/suhosin.ini):
suhosin.executor.include.whitelist = phar

The php.ini used by your command-line PHP is: /etc/php5/cli/php.ini
If you can not modify the ini file, you can also run `php -d option=value` to modify ini values on the fly. You can use -d multiple times."

bunu düzeltmek için, vim ile dosyayı açalım:
vim /etc/php5/cli/conf.d/suhosin.ini

ve suhosin'e phar 'ın güvenilir oldugunu belirtelim. Aşağıgıdaki satırı eklemeniz yeterli:
suhosin.executor.include.whitelist = phar

şimdi dosyayı kaydedip kapatalım. config dosyalarında değişiklik yapıldığında sunucuyu restart etmek iyi bir alışkanlıktır, burada cli kullanmamıza rağmen, kuralı bozmayalım ve restart edelim:
/etc/init.d/apache2 restart

şimdi yeniden composer'ı kurmaya calışalım:
curl -sS https://getcomposer.org/installer | php

şimdi composer kuruldu ama bunu path'e atmamız lazım, kullanımda kolaylık sağlasın diye.

mv composer.phar /usr/local/bin/composer

artık composer'ımız global olarak kuruldu. Her yerden çağırabiliriz hemde "php composer.phar" yerine sadece "composer" yazmamız yeterli olacak.

not: laraveli composer ile yuklemek icin, mcrypt gerekmekte. debian bazli distrolar icin php5-mcrypt'i :

apt-get install php5-mcrypt
komutu ile yukleyebilirsiniz. yukledikten sonra apacheyi restart etmelisiniz.

bazi versiyonlarda eski bir bug var, mcrypt ayarlarini kendi bulamiyor. boyle bir durumla karsilasirsaniz , kendiniz linklemeniz gerekli. Bunu su sekilde yapabilirsiniz:

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available
sudo php5enmod mcrypt
sudo service apache2 restart

şimdi composer kullanarak laravel yükleyelim.

composer create-project laravel/laravel projenizin_ismi --prefer-dist
composer create-project laravel/laravel lar --prefer-dist

bu komut ile bulunduğunuz klasorde "projenizin_ismi" diye bir klasor açılacak içine tertemiz bir laravel kuracak.

eger composer daha önceden yuklu ise ve bir süre gecmiş ise söyle bir hata veriyor:
Warning: This development build of composer is over 30 days old. It is recommended to update it by running "/usr/local/bin/composer self-update" to get the latest version.

bunu duzeltmek için
/usr/local/bin/composer self-update komutunu uygulayın.

dosyalara webserver için yetki verelim :
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;

burada app/storage klasoru özellikle önemli, buraya web sunucusunun ayzma yetkisi olması gerekiyor:
chmod -R 774 app/storage

dosyaların sahibi olarak websunucusunu atalayalım:
chown -R apache:apache projenizin_ismi

Eğer sunucunuzda json yoksa onu eklemeniz gerekiyor:
apt-get install php5-json

app/config/app.php dosyasında timezone ve locale gibi değişkenleri değiştirmeniz iyi olacaktır.

bazı klasorlerin yerlerini değiştirmek istiyorsanız bunu da bootstrap/paths.php dosyasından yapabilirsiniz.

Apache virtual host dosyası:
<VirtualHost *:80>
ServerAdmin fatih
ServerName lar.my
ServerAlias www.lar.my
ServerAlias m.lar.my
DocumentRoot /var/www/lar/public
<Directory /var/www/lar/public/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/lar__error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/lar__access.log combined
</VirtualHost>

(http://daylerees.com/codebright/getting-started adresinde nginx içinde gerekli ayarlar var)

Laravel Ve RESTFUL Routes
evet laravel RESTful routing destekliyor. app/routes.php dosyasından istek tipine göre yönlendirme yapabiliyorsunuz. İstek tiplerini yakalayıp yönlendirmek için aşağıdaki komutları kullanabilirsiniz.
Route::get();
Route::post();
Route::put();
Route::delete();
Route::any();

İstek tipini yakaladıktan sonra bir closure (anonymous function) ile yönlendirmeyi nasıl yapabileceğimizi belirtebiliriz.
Route::get('my/page', function() {
return 'Hello world!';
});

yukrdaki closure denilen, isimsiz bir function. Bunu çok rahat şu şekilde de yazabilirdik:
$logic = function() {
return 'Hello world!';
}
Route::get('my/page', $logic);

closure denilen, bir değişkene atanabilen isimsiz bir fonksiyondur.

Domain'e gelenleri yakalamak icin ise / işareti kullanıyoruz. mesela Route::get('/', function() { echo "anasayfa";} gibi.

Route Parameters:
mesela film kategorisi var, ve şu şekilde deği.şik route'lar belirlememiz gerekiyor:
film/aksiyon, film/macera, film/animaasyon
bunların her biri için ayrı routerlar yerine, bir değişkeni filmden sonrasına atayarak route işlerini halledebiliriz.
mesela aşagıda filmin sonuna filmtipi adinda bir değişken atadım.
Route::get('/film/{filmtipi?}', function($filmtipi = null)
{
if ($filmtipi == null) return 'Film anasayfa.';
return "Filmler / {$filmtipi} kategorisi sayfası.";
});
Sondaki ? işareti ile de filmtipi degişkeninin boş olabileceği anlamına geliyor.
şimdi bu filmtipi yerine ne gelirse onu artık $filmtipi degişkeni ile takip edebiliyorum.
böylece bir çok yönlendirmeyi tek satırda handle edebildim. Mesela urlden film/aksiyon geldiginde,
$filmtipi degiskeninin değeri "aksiyon" oluyor.
Eğer filmtipi degişkeni boş ise yani gelmemiş ise, o zaman da film ana sayfasına yönlendirdim.
bu arada eger istersen varsayılan filmtipi 'ni de set edebilirim, mesela
Route::get('/film/{filmtipi?}', function($filmtipi = 'aksiyon') <- bu sekilde atadıgımda, url adresinden hiç film tipi gönderilmemişse, filmtipi=aksiyon olarak atanıyor.

view içerisinden filmtipi degerine ulaşabilmek için, router'dan beslememiz gerekli.
Route::get('/film/{filmtipi?}', function($filmtipi = null)
{
switch($filmtipi){
case 'aksiyon':
case 'macera':
case 'kovboy':
$data['film_tipi'] = $filmtipi; //data arrayinini oluşturuyoruz
return View::make('sil/film_kategori',$data); //data arrayini view dosyasına gönderiyoruz.
break;
default:
return View::make('sil/film');
break;
}
});

artık view içerisinden şu şekilde kod yazmak mümkün:
gelen tipi adı: <?php echo $film_tipi; ?>
view dosyasında router'dan bastığımız değişken adını echoladıgınız görebiliriz.

Route Redirection:

Route::get('first', function()
{
return Redirect::to('second');
});

Route::get('second', function()
{
return 'Second route.';
});

yukardaki gibi bir yönlendirmede, /first olarak gelen her isteği /second olarak gelmiş gibi yönlendirebiliriz.

Hem View hemde Redirect objeleri, Laravel Response object'den türetiliyor. Laravel Response Objeleri, body, response code gibi bilgilere sahip ve bunlar değiştirebiliyoruz.
Aslında view yerine kendi response objemizi de oluşturabiliriz, mesela:
return Response::make('Hello world!', 200); <- 200 status code ile ekrana mesaj basıyoruz bu şekilde.
veya bunu bir değişkene atayıp, çeşitli header bilgileri de ekleyebiliriz:
$response = Response::make('Hello world!', 200);
$response->headers->set('our key', 'our value');
return $response;
gibi. response objeleri hep key-value şeklinde atanıyor.

var_dump($response->headers); ile header bilgilerini inceleyebiliriz.

resim veya xml gibi şeyler basarken, $response->headers->set('Content-Type', 'text/x-markdown'); ile istediğimiz content-type'ı da set edebiliriz.

---
The Laravel response object actually inherits most of its content from the Response object belonging to the Symfony HTTPFoundation component.
What this means is that if we take a look at the API for the Symfony response object, suddenly we have access to a whole heap of extra methods that aren’t covered in the Laravel docs!
$response->setTtl(60); <- bu şekilde content'in timetolive degerini de belirtebiliyoruz. Tam olarak bilmiyorum, symfony komutlarını bu şekilde kullanabiliyoruz ama.
---

Diğer response tipleri: (Response Shortcuts)

JSON olarak basmak için ise:
$data = array('iron', 'man', 'rocks');
return Response::json($data);

bmöyle yaparsak content - header larını da json için ayarlayıp gönderiyor.

Bir Dosyayı download ettirmek için (Download response) ise:
için ise:
$file = 'path_to_my_file.pdf';
return Response::download($file);
---

You can also provide optional second and third parameters to configure a custom HTTP status code and an array of headers. For example:
<?php
Route::get('file/download', function()
{
$file = 'path_to_my_file.pdf';
return Response::download($file, 418, array('iron', 'man'));
});
Here we will serve our file with the HTTP status code of 418 (I’m a Teapot) and a header value of iron=man.
-------

laravel-ogrenme-notlari image

Yazar Hakkında
FatihYILMAZ "Duyurmaya değer bir şey yapmıyor, ya da yaptıkları çok gizli, duyurmak istemiyor." Yazara Ait Diğer Yazılar
İlginizi Çekebilecek Diğer Yazılar
macos memcached kurmak ve php ile memcache baglantisi saglamakmacos icin memcached kurulumu ve php memcache extension ile baglantisini saglamak icin tutorial
laravel 5 - config ayarları olmadan birden çok veritabanına bağlanmaklaravel kullanarak kod tarafında veritabanı baglantılarını oluşturmak için örnek php class.
Bolt CMS (içerik yönetim sistemi) nedir,asıl kurulur? Detaylarla anlatıyorumbasit içerik siteleri için, Bolt CMS 'i anlatıyorum.
MySQL veritabanında para değerlerini hangi kolon tipinde tutmalı?E-commerce türü site yapanlar için özellikle dikkat etmeleri gereken bir konu: mysql için para değerlerini nasıl bir tablo yapısında tutmalı? Kolon tipi ne olmalı?
Joomla için modul kodlamak - Bölüm 1 : Basit ModullerBasit bir Joomla modulu yazacağız. Veritabanına bağlanacak, ekranda veritabanından çekilen bilgileri formatlayıp gösterecek. Joomla 1.5 versiyonu için duzenlenmiştir.
Yorumlar Yorum Ekle
Yorum yazabilmek için, Yeni Kayıt Oluşturun veya Site Girişi Yapın




Tüm Liste »

Son Gönderilen 20 Yazı

cloudflare ve api ile otomatik dns kaydi guncelleme mRemoteNG config dosyası confCons.xml yerini değiştirmek için macos memcached kurmak ve php ile memcache baglantisi saglamak gram altın değeri euro cinsinden nasıl hesaplanır? dolar ve türk lirası ol laravel 5 - config ayarları olmadan birden çok veritabanına bağlanmak Yunan Krizi Son Durum - Maliye Bakanlari Anlaşamadi - Liderler toplantisi iptal 18.06.2014 - 19.06.2015: borsa istanbul, Foreks dolar ve euro için takip notlar nodejs kurulum notları Circle Spike Run - Yeni ücretsiz Android Oyunu opel corsa için bazı kullanışlı ayarlar Tap Cowboy - Ücretsiz Android Mobil Telefon Oyunu - Kovboy Oyunu sevenlere mac os kullanirken ntfs dosya sistemine yazmak TP-LINK modemde port açmak - tum adsl modemlerde gecerli yontem Bolt CMS (içerik yönetim sistemi) nedir,asıl kurulur? Detaylarla anlatıyorum Çalışma günleri 5 günden 4 güne düşürülecek. MySQL veritabanında para değerlerini hangi kolon tipinde tutmalı? Çok kullanılan, işinize yarayacak temel Linux komutları Joomla için modul kodlamak - Bölüm 1 : Basit Moduller phantomjs kurulum ve ögrenim notları Çin malı cep telefonlarına IMEI kopyalama - IMEI Yedekleme

Popüler Yazılar

CNBC-E 'de Twitter Çılgınlığına Katıldı Legend and Killers'in Detayları Belli Oldu Rise of the Godslayer oyuncuları çağırıyor David Cage'in Chronicles Üzüntüsü Call of Duty: Black Ops dan yeni ekran görüntüleri IBM'in Tercihi Firefox "Her Evde 3D TV Olacak" Mafia 2'nin İlk Yapımcı Günlüğü Ortaya Çıktı FIFA Manager 11 Duyuruldu "Blu-ray Kaybedecek" Sin City 2 Baştan Yazılıyor Civilization V Collector's Edition paketi Ölü doğan cep telefonları Crysis 2 Collector's Edition Dragon Age 2 den yeni ekran görüntüleri

En Yeni Videolar

Çin malı cep telefonlarına IMEI kopyalama - IMEI Yedekleme Arch Enemy İstanbulda - 27 Ocak 2012 Karanlık Saat (The Darkest Hour) VİZYONDA! 2012 Eurovision Temsilcimiz CAN BONOMO! Film önerisi: Duplicity - Sahtekarlar Türkçe Adsense Resmi Youtube Kanalı açıldı. Nasıl iPhone kullanarak, windows laptop internete bağlanır? En Populer iPhone Oyunları: Fruit Ninja, Plants vs Zombies, Angry Birds - I ABIT 'den Kol Saati ve Cep Telefonu Bir Arada. RailGun silahları gerçek oluyor. Google Earth 6 duyuruldu, artık ağaçlar bile 3 boyutlu. iPhone ve İnternet Adres Sorunu Crysis 2'ye Yeni Tarih FIFA 11 için Yeni Tanıtım Videosu Yayınlandı Street Fighter ve Tekken Sonunda Bir Araya Geliyor

En Son Yorumlar

» GokhanYILMAZ@22:21: "hey gidi"
» FatihYILMAZ@12:35: "steve jobs öldü belki ama mirası yükselmeye devam ediyor. "
» paranoiahasu@19:19: "Eklenti seçenekleri biraz daha fazla olsa, kullanıcılarının bü..."
» Silphatos@19:02: "güzel olmuş, severim richard abimi. artık şatoya kat çeker para..."
» paranoiahasu@13:28: "beklentilerin gerisinde olan getiriler şirketler için zarar olmuş..."
» CeUn@11:42: "hem "kar" yapıp hem zarar etmek nasıl oluyor acaba.."
» paranoiahasu@16:25: "Core i7 serisinin ısınma sorununa da bir çare bulurlar umarım. S..."
» FatihYILMAZ@14:06: "BP battıkca batıyor be. bu nedir şimdi yani."
» paranoiahasu@02:25: "güçlü işlemci ve ram seçeneği ile bu tür telefonlar teknoloji..."
» paranoiahasu@02:24: "ilginç bir durum aslında. özellikle netbook satışlarının tava..."
» MrHades@12:34: "güzel olacağa benziyor."
» OzanFIRAT@11:49: "yarısı DLC olarak sunulur zaten hehe "
» OzanFIRAT@11:48: "benim 3.5 kiloluk darbeye dayanıksız, hatta taşımaya dayanaksız..."
» paranoiahasu@18:47: "Listede de yok yok maşallah =)"
» paranoiahasu@13:10: "Şu an betayı x1900 gt ekran kartı (256 bit) ve 3 gb ram ile oynuy..."
» FatihYILMAZ@18:02: "apple delisi kuyuya bir taş attı, artık tutabilene aşkolsun. tel..."
» paranoiahasu@13:59: "wave de çok iyi satıyormuş"
» OzanFIRAT@11:36: "herşeyiyle bana SWG'yi hatırlattı, sanırım kasten gelişimleri ..."
» OzanFIRAT@22:33: "heh bende ps3'te infamous oynarken aynı şeyleri hissediyordum :D "
» paranoiahasu@23:21: "ön sipariş linki aradım yazıda bulamadım .."
» paranoiahasu@19:15: "bu resmi uzunca bir süre duvar kağıdı olarak kullanmıştım =)"
» FatihYILMAZ@11:48: "ehe evde x-box'da bunu oynuyorum. Oyunun kendisini tavsiye ederim, ..."
» paranoiahasu@14:33: "Hemen edinmeli bu albümü =)"
» paranoiahasu@02:16: "İnanılmaz şekilde kredi kartımı kabul etmeyen steam yüzünden ..."
» OzanFIRAT@23:36: "haberi bitirmeyi beklemeden, yazarken sabredemeyip Left 4 Dead 2 ve ..."

Evvel Zaman