Bir faces bileşeni (component) oluşturmak için sınıfınızı Component sınıfından genişletirsiniz.
basit bir bileşenin en az iki metodu bulunmalıdır. Kurucu metod ve startTag metodu.
Kurucu metodun iki parametresi bulunur birinci parametresi bir FacesController ikinci parametresi ise view dosyasında etiket olarak tanımlanan bileşenin nitelikler dizisidir.
function construct(FacesController &$controller,$args=null)
startTag metodu bileşen etiketinin başlangıç için çıktı üreten metodudur. Bir etiket açıldığında çalıştırılır.
endTag metodu bileşen etiketinin kapatıldığında çalıştırılan metodu.
Basit bir örnek
import("phpf.ui.component");
class Kalinyaz extends Component{
function Kalinyaz (FacesController &$controller,$args=null){
parent::Component($controller,$args);
}
function startTag() {
return '<strong>';
}
function endTag() {
return '</strong>';
}}
Örneğimizde Kalinyaz isminde bir bileşen tanımladık <f:Kalinyaz> </f:Kalinyaz> etiketleri arasındaki metni kalın yazı tipi ile tarayıcıda göstermek istiyoruz. Bileşenimizi kullanmak istediğimiz dizin içerisine kalinyaz.php adı ile kayıt ediyoruz.
Kalinyaz bileşenini view içerisinde kullanımı.
<faces>
<@import prefix="my" taglib="dizinadi.kalinyaz"/>
<my:kalinyaz>
Bu yazı kalın olmalı
</my:kalinyaz>
Bu yazı normal
</faces>
Bileşen içerisinde Niteliklere erişim.
Bileşenin attributes uyesi nitelikleri içeren bir dizidir nitelik değerlerine
$this->attributes[nitelikadi] şeklinde erişilebilir.
Yukarıdaki örneğimizi biraz daha geliştirip metin rengi ve metin boyunu uygulayan bir bileşen haline getirelim. Aşağıdaki örneği inceleyin
import("phpf.ui.component");
class Kalinyaz extends Component{
function Kalinyaz (FacesController &$controller,$args=null){
parent::Component($controller,$args);
}
function startTag() {
$html = '<strong>'.'<font color="'.$this->attributes[renk].
'" size="'.$this->attributes[boy].'">' ;
return $html;
}
function endTag() {
return '</font></strong>';
}}
Yukarıda bileşenimize boy ve renk adında iki nitelik olduğunu görülebilir.
Bileşenimizin view içerisinde kullanımı.
<faces>
<@import prefix="my" taglib="dizinadi.kalinyaz"/>
<my:kalinyaz boy="10" renk="red">
Her hangi bir yazı
</my:kalinyaz>
</faces>
Component sınıfının doAttributes() metodu tüm nitelikleri eş değer ismi ile yerleştirir
function startTag() {
return '<strong>'.'<font'. $this->doAttributes() .'>' ;
}
<faces>
<@import prefix="my" taglib="dizinadi.kalinyaz"/>
<my:kalinyaz size="10" color="red">
Her hangi bir yazı
</my:kalinyaz>
</faces>
Bileşenlere eklenen öğeler bileşeninizin items uye dizinsinde yer alır
Items kullanımı için aşağıdaki örneği inceleyin
import("phpf.ui.component");
class Strong extends Component{
function Strong(FacesController &$controller,$args=null){
parent::Component($controller,$args);
}
function startTag() {
$html = '<strong>'.'<font'. $this->doAttributes() .'>' ;
foreach($this->items as $item)
$html.= '<br/><a href="'.$item[url].'">'.$item[title].'</a>';
return $html;
}
function endTag() {
return '</font></strong>';
}
}
View içerisinde kullanımı
<faces>
<@import prefix="my" taglib="mypath.strong"/>
<my:strong name="test" size="4" face="Arial" color="red">
<@item url="http://www.google.com" title="google"/>
<@item url="http://www.webmahsulleri.com" title="WebMahsulleri"/>
bazı yazilar
</my:strong>
</faces>
<p class="MsoNormal">
Bir faces bileşeni (component) oluşturmak için sınıfınızı Component sınıfından genişletirsiniz.
basit bir bileşenin en az iki metodu bulunmalıdır. Kurucu metod ve startTag metodu.
Kurucu metodun iki parametresi bulunur birinci parametresi bir FacesController ikinci parametresi ise view dosyasında etiket olarak tanımlanan bileşenin nitelikler dizisidir.
function construct(FacesController &$controller,$args=null)
startTag metodu bileşen etiketinin başlangıç için çıktı üreten metodudur. Bir etiket açıldığında çalıştırılır.
endTag metodu bileşen etiketinin kapatıldığında çalıştırılan metodu.
Basit bir örnek
import(”phpf.ui.component”);
class Kalinyaz extends Component{
function Kalinyaz (FacesController &$controller,$args=null){
parent::Component($controller,$args);
}
function startTag() {
return ‘<strong>’;
}
function endTag() {
return ‘</strong>’;
}
}
Örneğimizde Kalinyaz isminde bir bileşen tanımladık <f:Kalinyaz> </f:Kalinyaz> etiketleri arasındaki metni kalın yazı tipi ile tarayıcıda göstermek istiyoruz. Bileşenimizi kullanmak istediğimiz dizin içerisine kalinyaz.php adı ile kayıt ediyoruz.
Kalinyaz bileşenini view içerisinde kullanımı.
<faces>
<@import prefix=”my” taglib=”dizinadi.kalinyaz”/>
<my:kalinyaz name=”yaz”>
Bu yazı kalın olmalı
</my:kalinyaz>
Bu yazı normal
</faces>
Bileşen içerisinde Niteliklere erişim.
Bileşenin attributes uyesi nitelikleri içeren bir dizidir nitelik değerlerine
$this->attributes[nitelikadi] şeklinde erişilebilir.
Yukarıdaki örneğimizi biraz daha geliştirip metin rengi ve metin boyunu uygulayan bir bileşen haline getirelim. Aşağıdaki örneği inceleyin
import(”phpf.ui.component”);
class Kalinyaz extends Component{
function Kalinyaz (FacesController &$controller,$args=null){
parent::Component($controller,$args);
}
function startTag() {
$html = ‘<strong>’.'<font color=”‘.$this->attributes[renk].
‘” size=”‘.$this->attributes[boy].’”>’ ;
return $html;
}
function endTag() {
return ‘</font></strong>’;
}
}
Yukarıda bileşenimize boy ve renk adında iki nitelik olduğunu görülebilir.
Bileşenimizin view içerisinde kullanımı.
<faces>
<@import prefix=”my” taglib=”dizinadi.kalinyaz”/>
<my:kalinyaz name=”yaz” boy=”10″ renk=”red”>
Her hangi bir yazı
</my:kalinyaz>
</faces>
Component sınıfının doAttributes() metodu tüm nitelikleri eş değer ismi ile yerleştirir
function startTag() {
return ‘<strong>’.'<font’. $this->doAttributes() .’>’ ;
}
<faces>
<@import prefix=”my” taglib=”dizinadi.kalinyaz”/>
<my:kalinyaz name=”yaz” size=”10″ color=”red”>
Her hangi bir yazı
</my:kalinyaz>
</faces>