By Hüseyin Bora
Header nesnesi FacesRenderer sınıfı faces dosyasını ayrıştırken <head> etiketi ile karşılaştığında otomatik olarak bir Header nesnesi oluştur render işleminin sonucunda da bu header nesnesini döndürür. Header nesnesi sayfanın <head> </head> aralığına ekleme yapmak için kullanılır.
Header sınıfının metotları şöyledir
- addMeta(string name, string content) görüm’e bir meta etiketi ekler
- addScript(string file) görüm’e file ile belirtilen dosya adı ile script etiketi ekler
- addLink(string file) görüm’e file ile belirtilen dosya adı ile link etiketi ekler rel=”stylesheet” type=”text/css” niteliklerini kullanır
- setTitle(string title) sayfa başlığını değiştirir
- addText(string text) text parametresini <head> </head> etiketleri arasına ekler.
Örnek
<?php
require_once ("config.php");
import("phpf.controllers.facete");
class Head extends Facete {
public function Head() {
parent::Facete();
$this->render("view.html");
}
function dugmeClicked($e) {
$head =FacesRenderer::getHeader();
$head->setTitle("Butona Tıklayınca Başlğı değiştirdim");
}
public function prerender() {
$head= FacesRenderer::getHeader();
$head->addMeta("description", "PHP Faces MVC Framework");
$head->addMeta("keywords", "PHP,ORM,MVC,AJAX");
$head->addScript("scritp.js");
$head->addLink("style.css");
}
}
Dispatcher::dispatchclass("head");
?>
Görünüm
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import taglib="phpf.ui.button" prefix="f"/>
<f:button name="dugme" text="Tıkla1" onclick="actionevent"/>
</faces>
</body>
</html>
Header nesnesi
FacesRenderer sınıfı faces dosyasını ayrıştırken <head> etiketi ile karşılaştığında otomatik olarak bir Header nesnesi oluştur render işleminin sonucunda da bu header nesnesini döndürür. Header nesnesi sayfanın <head> </head> aralığına ekleme yapmak için kullanılır.
Header sınıfının metotları şöyledir
- addMeta(string name, string content) görüm’e bir meta etiketi ekler
- addScript(string file) görüm’e file ile belirtilen dosya adı ile script etiketi ekler
- addLink(string file) görüm’e file ile belirtilen dosya adı ile link etiketi ekler rel=”stylesheet” type=”text/css” niteliklerini kullanır
- setTitle(string title) sayfa başlığını değiştirir
- addText(string text) text parametresini <head> </head> etiketleri arasına ekler.
Örnek
<?php
require_once ("config.php");
import("phpf.controllers.facete");
class Head extends Facete {
public function Head() {
parent::Facete();
$this->render("view.html");
}
function dugmeClicked($e) {
$head =FacesRenderer::getHeader();
$head->setTitle("Butona Tıklayınca Başlğı değiştirdim");
}
public function prerender() {
$head= FacesRenderer::getHeader();
$head->addMeta("description", "PHP Faces MVC Framework");
$head->addMeta("keywords", "PHP,ORM,MVC,AJAX");
$head->addScript("scritp.js");
$head->addLink("style.css");
}
}
Dispatcher::dispatchclass("head");
?>
Görünüm
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import taglib="phpf.ui.button" prefix="f"/>
<f:button name="dugme" text="Tıkla1" onclick="actionevent"/>
</faces>
</body>
</html>
By Hüseyin Bora
Niteliklere erişiken nesne adı -> nitelik adı şeklindendir. örneğim bir textbox birde button bileşenimiz olsun buttona tıklandığında textbox un rengini değiştirelim. faces view tanımlaması aşağıdaki gibidir.
<faces>
<@import taglib="phpf.ui.*" prefix="face"/>
<face:textbox name ="yazi" text ="Merhaba"/>
<face:textbox name ="button" text ="Rengi Değiştir"/>
</faces>
class Controller extends Facete{
function Controller(){
parent::FacesController();
$this->render("view.html");
}
function buttonClicked($evt){
$this->yazi->setProperty("style", "background:blue");
}
}
Örneğimizde textbox bileşenin style niteliğine background:blue değerini artardık ve rengini değiştirmiş olduk.
Bir niteliği değiştirmek istediğinizde
$this->bilesenadi->nitelik=”deger”;
Ya da
$this->yazi->setProperty(”nitelik”, “değer”);
İki kullanımda gecerlidir.
Şimdi örneğimizi biraz daha geliştirelim bir combobox bileşeninde renkler olsun ve seçilen rengi ajax kullanarak textbox nesnesine uygulayalım.
Örneğimiz için view aşağıdaki şekildedir.
<faces>
<@import prefix="face" taglib="phpf.ui.*"/>
<face:textbox name ="textbox" text ="Merhaba"/>
Rengi değiştir
<face:combobox name="colors"
bind="array(Aqua,Blue,AliceBlue,Beige,Black,Brown ,Navy,Pink,Red,Orange,Yellow ,White,Green)"
onchange="ajaxevent">
</face:combobox>
</faces>
import("phpf.controllers.facete");
class Style extends Facete
{
function Style()
{
parent::Facete();
$this->render("view.phpf");
}
protected function colorsChanged($evt)
{
$color = $this->colors->getSelected();
$this->textbox->setProperty("style","background:$color");
$this->AjaxResponse();
}
}
İşte Uygulamamızın Çalışır hali.
By Hüseyin Bora
PHP Faces içerisinde pek çok bileşen bulunmaktadır. kendi bileşenlerinizide geliştirebilirsiniz. bu konuya daha sonra değinicem ui dizini altındaki bileşenleri inceleye bilirsiniz.
PHP Faces içerisinde DOJO Java Script frameworkunu barındırmaktadır. Dojo hakkında detaylı bilgiyi http://www.dojotoolkit.org/ adresinde bulabilirsiniz.
Şuan için PHP Faces ile birlikte ui ve widget adı altında 2 adet bileşen kütüphanesi bulunmaktadır. ui altında standart HTML form bileşenleri ui.widget altında DOJO dijit javascript tabanlı bileşenler bulunmaktadır.
Bileşenler için kullanım örneklerini http://www.webmahsulleri.com/faces/doc/index.phpf adresindeki HTML UI ve Widgets UI başlıkları altında bulabilirsiniz.
UI HTML Bileşenleri
- Button
- TextBox
- Label
- ComBox
- CheckBox
- Image
- Hidden
- Radio
- Form
- Grid
- TextArea
UI Widget DOJO Bileşenleri
- DjButton
- DjTextBox
- CurrencyText
- ValidationText
- NumberTextbox
- NumberSpinner
- DJComboBox
- DateBox
- DJTextArea
- DJCheckBox
- RadioGroup
- Tab
- TabPane
- Accordion
- AccordionPane
- Editor
By Hüseyin Bora
PHP Faces ile geliştirdiğim çevrim içi Ajax hesap makinası örneği
PHP Faces in olay mekanizması içeresinde üç önemli kavramı anlamanızda yarar vardır. PHP Faces olay yakalama kalıpları Java tarzındadır. eğer java swing ile daha önce uygulama geliştirmişseniz bu tanımlar size yabancı gelmeyecektir.
- Listener : Dinleyiciler
- Event: Olaylar
- Component : bileşennler
Listener bir arayuz interface tanımlar Controller sınıfıda dinlemeye alacağınız bu aryüzleri uygularsınız.
Eventlar gerçekleşen olay ile ilgili nesnelerdir. bunlar framework tarfından oluşturulur ve olay ile ilgili metot parametrelerine gecirilir.
Component genellikle olaylar bir bileşen tarfından tektiklenir.
PHP Faces da şuan bulunan listenerlar
- ActionListener : tıklama olayı için kullanılır
- MouseListener : mouse olayları için kullanılır
- ValueChangedListener : değerler değiştiğinde kullanılır
<?php
interface ActionListener extends FacesListener
{
public function actionPerformed(ActionEvent $event);
}
?>
PHP Faces da şuan bulunan olaylar
- ActionEvent : bir tıklama olayı gerçekleştiğinde
- MoueseEvent : bir mouse olayı gerçekleştiğinde
- ValueChangedEvent : değişim olayı gerçekleştiğinde
controler sınıfımız listener ile ilgigili metodunu çağırır ve listener uygulayan sınıfı olay için kayıt eder.
PHP faces olaylar için temel iki post yöntemi kullanır ilk yöntem post back ve ikinci yöntem ajaxtır.
olayların gerçekleşmesi için view(görünüm) tarfında bileşen tanımlamaları yapılırken bildirilmesi gerekir.
bileşenin post back yapmasını istiyorsanız bileşen tanımında ilgili olay nitelğine “actionevent”
bileşenin bir ajax çağrısı yapmasını istiyorsanız bileşen tanımında ilgili olay nitelğine “ajaxevent” değerlerinden birini verirsiniz.
Örnek bir bileşen ve olay tanımlaması
<faces>
<@import prefix="face" taglib="phpf.ui.button" />
<face:button name="button1" text="Tıkla" onclick="actionevent"/>
</faces>
Yukarıdaki satırlar ile bir button sınıfından button1 adında yeni bir örneğini oluşturduk. button1 nesnesine controller içinden erişebiliriz
yukarıdaki view ımız için örnek controller
import("phpf.controllers.facescontroller");
import("phpf.events.actionevent");
import("phpf.listeners.actionlistener");
class Sample extends FacesController implements ActionListener
{
function Sample()
{
parent::FacesController();
$this->addActionListener($this);
$this->render("view.phpf");
}
public function actionPerformed(ActionEvent $evt)
{
$this->button1->setText("Bana tıkladın");
}
}
Yukarıdaki satırları özetlemek gerekirse
class Sample extends FacesController implements ActionListener
ActionListener dinleyicisi uygulanıyor.
$this->addActionListener($this);
dinleyici nesne kayıtediliyor.
$this->render(”view.phpf”);
view dosyamız render ediliyor.
İstemci tarayıcı tarafında oluşturduğumuz buttona tıklandığında ActionEvent olayı meydana geliyor ve actionPerformed metodu çalıştırılıyor.
public function actionPerformed(ActionEvent $evt){
$this->button1->setText(”Bana tıkladın”);
button nesnesinin text niteliği bana tıkladın olarak değiştiriliyor.
}
işte actionevent ile çevrim içi bir örnek
Aşağıdaki butona tıklayın
Kaynak kodları phpfaces indirdiğnizde applications/demo dizininde görebilirsiniz