serimizin ilk yazisinda öncelikle calisma ortamimizi ayarliyacagiz,
ardindan baslamak icin gerekli olan dosyalari ve ayarlari yapacagiz.
Ben bu kütüphaneye kitapcik adi veriyorum ondan kullanacagim domain ismi kendi bilgisayarimda kitapcik.dev olacak.
Öncelikle bunu ayarlamak icin secmis oldugunuz domain ismini Linux da /etc/hosts ve
Windows da c:\windows\system32\drivers\etc\hosts dosyasi icine yazmamiz gerekiyor.
127.0.0.1 kitapcik.dev
ardindan vhosts dosyanizi bulup icine bir vhosts eklemeniz grekiyor.
xampp da bu dosya C:\xampp\apache\conf\extra\httpd-vhosts.conf
Vhosts u eklemeden önce tüm dosyalarimizin bulunacagi klasörün yerini tespit edelim.
Ben suan bu makaleyi yazarken Windows da calistigim icin örnegide ona göre verecegim, linuxcular kendilerine göre ayarlasinlar.
benim tüm dosyalarim: c:\xampp\htdocs\kitapcik\ klasörü altinda olacak.
Kisaca dizin yapimiza bakalim.
dizin yapisi sizin bilgisayarinizdada aynen bu sekilde olmasi lazim.
simdi vhost umuzu ayarliya biliriz.
örnek:
<virtualhost *:80> ServerName kitapcik.dev DocumentRoot "c:\xampp\htdocs\kitapcik\html" ErrorLog logs/kitapcik-error_log CustomLog logs/kitapcik-access_log common </virtualhost>
bunu vhosts dosyasi icine ekleyiniz ve ardindan apache yi yeniden baslatiniz.
simdi html klasörü icinde bir index.html olusturup icine herhangi birsey yazin
mesela:
bu bir test sayfasidir
ve ardindan herhangi bir Browserde kitapcik.dev ziyaret ettinizmi bu yaziyi görüyorsaniz herseyi simdiye kadar dogru yaptiniz demektir.
simdi ZF in sitesinden Zend Framework x.x.x Full.zip i indirin biryere kaydedin icinden isimizi görecek olan dosyalari alacagiz sadece.
library klasöründen Zend klasörünü tüm icerigiyle birlikde lib klasörümüzün icine kopyaliyalim.
extras/library klasörü icinden ZendX klasörünü da lib klasörü icine kopyalayalim.
Tüm uygulamada resimler, css dosyalari, ve js dosyalari disinda, disaridan erisile bilinicek tek dosyamiz index.php olacak.
Bu ne manaya geliyor, sitemizin her sayfasina giden yol index.php den geciyor onun icin bu dosyamizin adi bootstrap dosyasi.
Bir MVC (Model-View-Controller) uygulamasinda, (burda oldugu gibi) disaridan erisile bilinen tek dosya Bootstrap dosyasi olmalidir.
bu dosya kisaca Front-Controller den bir instance (örnek) alip onun dispatch() metodunu calistiriyor.
Sitemize giden tüm isteklerin (request) index.php den yönlenmesi icinde yapmamiz gerekenler var.
öncelikle php de mod_rewrite modulu aktif halde olmasi lazim.
aktife degilse xampp kullanicilari mod_rewrite i buradan aktif hale getire bilirler.
c:/xampp/apache/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
satirin basindaki ; kaldirin ve kaydedin ardindan apache yi yeniden baslatmaniz gerekiyor.
evet simdi html klasörü icine , tüm istekleri index.php ye yönlendiricek bir .htaccess dosyasi ekliyelim.
dosyanin icerigi bu sekilde olmalidir.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
ardindan
application klasörü icine bir bootstrap.php adinda bir dosya olusturalim.
evet artik browserde ne yazarsak index.php dosyamiz gelecek.
Hmmmmm bizim henüz index.php dosyamiz yokki diyeceksiniz haklisiniz, baslarda olusturdugumuz index.html dosyasini silip yerine bir index.php dosyasi olusturalim.
icine bu satirlari ekliyelim ve kaydedelim.
< ?php require '../application/bootstrap.php'; [/php] index.php nin icerigi sadece bukadar. ardindan application/bootstrap.php dosyamizi inceliyelim. [php] < ?php defined('APPLICATION_PATH') or define('APPLICATION_PATH', realpath(dirname(__FILE__))); defined('APPLICATION_STATE') or define('APPLICATION_STATE', 'development'); defined('LIB_PATH') or define('LIB_PATH',realpath(dirname(APPLICATION_PATH)."../lib")); // lib klasörümüzü include pathe eklememiz gerekiyorki gerekli Zend siniflari yüklenirken sorun yasamiyalim. set_include_path(LIB_PATH. PATH_SEPARATOR .get_include_path()); //tüm Zend siniflarinin otomatikmen yüklenmesi icin Autoloader i aktif hale getiriyoruz, bunu yapmassaniz heryerde require_once yada include kullanmaniz gerekecek require_once('Zend/Loader.php'); Zend_Loader::registerAutoload(); require_once LIB_PATH.'/plugins/Initializer.php'; // front controller objesini olusturalim $front = Zend_Controller_Front::getInstance(); //ayar Pluginini kayit edelim $front -> registerPlugin(new Kitapcik_Plugin_Initializer(APPLICATION_STATE,APPLICATION_PATH)); $front -> throwExceptions(false); $front -> dispatch();
lib/plugins klasörüne bir initialize.php olusturalim, ekteki dosyadan gerekli icerigi oraya ekliyelim.
initialize.php de yapilan tüm ayarlara gerekli aciklamalar dosya icinde yorum (comment) olarak yapildi.
Initialize.php bir Plugindir daha genis bilgi icin tikla
Simdi application klasörü icinde settings.ini diye bir dosya olusturup bunlari icine kopyaliyalim.
[production] db.adapter = "pdo_mysql" db.params.host = "localhost" db.params.dbname= "kitapcik" db.params.username = "root" db.params.password = ""
host, dbname, username, password alanlarini lütfen kendi db bilgilerinizle degistirin.
action lardan ve controllerden konusmadan önce adres yapisina bakalim ZF in
domainden sonra ilk parca controller ikinci parca action olur.
modular bir yapiya sahipsek ilk parca module, ikinci controller ve ücüncü action olur.
örnek:
skorp.eu/tutorial/zfbaslangic
tutorial controllerimiz oluyor
zfbaslangic ise tutorial controllerinde bulunan action umuz.
herhangi bir controller veya action verilmemisse Index varsayilir ve o controller action calistirilir.
Zend_Controller in dispatcher’i controller adinda, standard controller klasöründe bir Sinif arar. sinif adi su sekilde olmalidir
Hemen hemen ayni sekilde Action belirlenir: Action da dikkat edilmesi gereken Action in tümü kücük harflerden olusmasi lazim, sonuna eklenen Action kisminin A harfi büyük
örnek: public function zfbaslangicAction() {}
Ana sayfamizin controllerini ve Action unu yazalim bakalim.
application/controllers/IndexController.php
class IndexController extends Zend_Controller_Action { public function indexAction() { $this->_redirect('/index/liste'); } public function listeAction() { $this->view->header ="Kitapcik liste"; } }
Standard olarak Viewrenderer (action-helper) acik olur.
Yani Action cagrildiginda o Action adinda bir View script varmi diye kontrol edilir yoksa hata gösterilir varsa action un icerigi.
Simdi Views/scripts/ klasörü icine bir index (Controller ismi) klasorü olusturlaim icine bir liste.phtml (action ismi) kayit edelim
liste.phtml icerigi su sekilde ola bilir suan.
< ?= $this->headTitle('Kitapcik liste'); ?> Slm dünya
Layouts klasöründe layout.phtml adinda dosya olusturlaim icine bunlari kayit edelim.
< ?= $this->doctype(); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> < ?php echo $this->headTitle(); echo $this->headScript(); echo $this->headStyle(); echo $this->headLink()->appendStylesheet('/css/main.css') ?> </head> <body> <center> <table cellpadding="0" cellspacing="0" class="maintable"> <tr> <td colspan="2"> <h2>< ?php echo $this->escape($this->header); ?></h2></td> </tr> <tr> <td class="navigation"> <ul> <li>Home</li> <li>ekle</li> <li>iletisim</li> </ul> </td> <td class="main">< ?= $this->layout()->content ?></td> </tr> </table> </center> </body> </html>
$this-> ile basliyanlar birer View Helper dir.
Sürekli View de lazim olan fonksiyonlari view Helper olarak olusturursaniz, Tüm Viewlarda kullana bilrisiniz.
ZF ile gelen birsürü View Helper var, View Helperler hakkinda daha genis bilgi icin tikla
Örnek olarak Headtitle ViewHelperine bakalim.
Her sayfada degisik title kullanmak icin bunu kullana bilirsiniz.
layout.phtml ve liste.phtml de ki kullanimina bakiniz.
Kisaca Layout lara da deyinelim, layout u sayfanin plani olarak düsünün, sayfanin görünümü, yapisi, vs. bu layout dosyasinda ayarlayin, birtek sürekli degisen icerigi layout a ekliyecegiz onu bu satirla yapa
biliriz.
< ?= $this->layout()->content ?>
view den gelen veri bu bölüme eklenecektir.
simdi Browseriizde kitapcik.dev yazalim bakalim ne görecegiz.
asagidaki resme benzer birsey görüyorsaniz herseyi dogru yaptiniz demektir.
Ilk yazimizin burda sonuna geldik.
Soru ve hatalari burada veya Zend Framework türkce Forum dan yaza bilirsiniz.
Kodlari DOWNLOAD: ZF i kendiniz indirip makalede yazdigi gibi lib klasörüne yüklemeniz gerekiyor.
2 Comments
[…] – Sistemi hazirliyalim (Vhosts) , Bootstrap dosyasi […]
tesekkurler.ellerinize saglık