PHP Faces Pager Etiketi ile Sayfalama (Pagination)

0

Tarih : 09-11-2009 | Yazan : Hüseyin Bora | Kategori : PHP


Pager Etiketi sayfalama yapmak amacıyla kullanılır.İki farklı kullanım vardır birinci kullanım şeklinde entity niteliğine varlık sınıfının adı.
Limit niteliğine gösterilecek kayıt sayısı yazılır eğer FQL etiketinde olduğu gibi bir sonuc kümesi elde edilmek isteniyora resource niteliğine geri alınacak sounuc kümesinin adı yazılmalıdır.

Eğer php faces framework ü URI modunda kullanıyorsanız pager nesnesinin uri biçimde sayfalama oluşturması için pager etiketinin type niteliğine path değerini vermeniz gerekir.

Örnek Pager ve Grid bileşenlerinin birlikte kullanımı

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="f" taglib="phpf.ui.*"/>
<@import prefix="db" taglib="phpf.db.*"/>
<f:grid id="grid" width="100%" bind="$liste" border="1">
<@item   key="no"  title="Urun no" />
<@item   key="ad" title="Urun adı"/>
<@item   key="fiyat" title="fiyat"/>
<@item  input="img"  key="resim" title="Resim"/>
<@item  input="link" title="Detay"  url="testet.php?edit=$no"/>
</f:grid>
<db:pager id="pager"  limit="3" entity="urun" resource="liste"
previous="Önceki" next="Sonraki"/>
</faces>
</body>
</html>

Pager etiketinin query niteliği FQL secim işleminden sonraki FQL cümlelerini kabul eder
Örnek Fiyat aralığı

<db:pager id="pager"  type="path" limit="3" entity="urun" resource="liste"
query="WHERE urun.fiyat >=50 AND urun.fiyat<=100"/>

Pager bileşeninin diğer kullanımı ise veritabanı sorgularını Kontrollcü içerisinde yapıp pager bileleşenine count niteliğne toplan kayıt sayısını ve limit niteliğinede sayfada gösterilecek kayıt sayısı verilmelidir.

Örnek
Görünüm

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="c" taglib="phpf.core" type="static"/>
<@import prefix="db" taglib="phpf.db.*"/>
<table border="1" align="center">
<thead>
<th>Urun NO</th>
<th>Urun Adı</th>
<th>Fiyat</th>
<th>Resim</th>
</thead>
<c:foreach var="#{$this.list}" item="$urun">
<tr>
<td>#{$urun.no}</td>
<td>#{$urun.ad}</td>
<td>#{$urun.fiyat}</td>
<td><img src="#{$urun.resim}"/></td>
</tr>
</c:foreach>
</table>
<db:pager id="pager" limit="5" count="100"/>
</faces>
</body>
</html>

Facete  Controller tarafı

<?php

import("phpf.controllers.facete");

import("dbf.persistence");

import("entity.*",true);

import("phpf.db.pager");
class Urunler extends Facete {

protected $list;

public function Urunler() {

parent::Facete();
$this->render("urunler.html");
}

public function prerender() {
$em = EntityManager::getInstance();
$query= $em->createQuery("Select count(u.no) from urun u");
$this->pager->setCount($query->execute()->getSingle());
$query= $em->createQuery("Select u from urun u GROUP BY u.no ".$this->pager->getLimitQuery());
$this->list =$query->execute()->getResultList();
}
}
?>

Pager bileşeninin QueryString den aldığı p değişkeni istenirse değiştirile bilir bunun için bilşen tanımı view dosyasında yapılırken request niteliğne işlenecek değişken adı yazılır.

<db:pager id="pager" limit="3" count="10" request="sayfa" type="path"/>
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

SQL ve FQL Etiketleri

0

Tarih : 09-11-2009 | Yazan : Hüseyin Bora | Kategori : FDL, Faces ORM, PHP, PHP Faces, PHP ORM

SQL etiketi query niteliğine paremetre olarak verilen SQL sorgusu işletir ve id niteliğine verilen isim ile bir sonuc kümesi getirir.

Örnek

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="c" taglib="phpf.core" type="static"/>
<@import prefix="sql" taglib="phpf.db.sql"/>
<sql:sql id="results" query="select * from urun"/>
<table border="1" align="center">
<thead>
<th>Urun NO</th>
<th>Urun Adı</th>
<th>Fiyat</th>
<th>Resim</th>
</thead>
<c:foreach var="#{$results}" item="$urun">
<tr>
<td>#{$urun.no}</td>
<td>#{$urun.ad}</td>
<td>#{$urun.fiyat}</td>
<td><img src="#{$urun.resim}"/></td>
</tr>
</c:foreach>
</table>
</faces>
</body>
</html>

FQL Etiketi
FQL etiketi query niteliğine paremetre olarak verilen FQL sorgusu işletir ve id niteliğine verilen isim ile bir sonuc kümesi getirir.

Örnek

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="f" taglib="phpf.ui.*"/>
<@import prefix="fql" taglib="phpf.db.fql"/>
<fql:fql id="results" query="select u from urun u"/>
<f:grid name="grid" height="30%" width="75%" bind="$results" border="1">
<@item   key="no"  title="no" />
<@item   key="ad" title="Urun adı"/>
<@item   key="fiyat" title="fiyat"/>
</f:grid>
</faces>
</body>
</html>

SQL ve FQL etiketlerine @item etiketinin value niteliği ile parametre aktarılabilir.

Örneğin aşağıdaki gibibir ifademiz olsun

SELECT u FROM urun u WHERE u.fiyat >? AND u.fiyat <?

Örnek fiyat aralığı

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="f" taglib="phpf.ui.*"/>
<@import prefix="fql" taglib="phpf.db.fql"/>
<fql:fql id="results" query="select u from urun u WHERE u.fiyat >? AND u.fiyat <?">
<@item value ="100"/>
<@item value= "500"/>
</sql:fql>
<f:grid name="grid" height="30%" width="75%" bind="$results" border="1">
<@item   key="no"  title="no" />
<@item   key="ad" title="Urun adı"/>
<@item   key="fiyat" title="fiyat"/>
</f:grid>
</faces>
</body>
</html>
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

ORM Kütüphanesi ve Grid Table Kullanımı

0

Tarih : 09-11-2009 | Yazan : Hüseyin Bora | Kategori : FDL, Faces ORM, PHP, PHP Faces, PHP ORM

Grid bileşeni kendisine bind niteliği ile belirtilen Sınıf diziden bir HTML tablosu oluşturur. Oluşturulan tabloda hangi sutunların bulunacağı @item direktifi ile bildirilir. @item direktifinin key niteliğine Varlık sınıfının uye ismi title niteliğine ise sutunun başlığı yazılır.

Table

@item direktifi ile tabloya sınıf harici bilgi eklemek için input niteliği kullanılır.

<@item  input=”link” title=”Düzenle”  url=”testet.php?edit=$no”/>

Örneğin yukarıdaki @item direktifi ile düzenle başlıklı bir bağlantı oluşturulur ve bağlantı adresi url niteliği ile belirtilir.

Örnek Aşağıdaki gibi bir Varlık sınfımız olsun

<?php
/**
*  @Table(name = "urun")
*/
class Urun extends Entity
{
/**
* @Id
* @Column(name = "no")
*/

private $no;
/**
* @Column(name = "ad")
*/

private $ad;
/**
* @Column(name = "fiyat")
*/

private $fiyat;
/**
* @Column(name = "resim")
*/

private $resim;
function get($name) {

return $this->$name;
}
function set($name,$value) {
$this->$name = $value;
}
}
?>

Urunlerin listesini oluşturmak için aşağıdaki gibi bir kontrolcümüz olsun $list değişkenin içerisine veritabanından çektiğimiz bilgileri aktarıyoruz.

<?php

import("phpf.controllers.facete");

import("dbf.persistence");

import("entity.urun",true);
class UrunGrid extends Facete {

protected $list;

public function UrunGrid() {

parent::Facete();
$em = EntityManager::getInstance();
$query= $em->createQuery("Select u from urun u");
$query->execute();
$this->list = $q->getResultList();
$this->render("grid.html");
}
}
?>

Görünüm Dosyamız grid etiketinin bind niteliğine bind=”$this.list” eklememiz önemli

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="f" taglib="phpf.ui.*"/>
<f:grid name="grid" height="30%" width="75%" bind="$this.list" border="1">
<@item   key="no"  title="Urun no" />
<@item   key="ad" title="Urun adı"/>
<@item   key="fiyat" title="fiyat"/>
<@item  input="img"  key="resim" title="Resim"/>
<@item  input="link" title="Detay"  url="testet.php?edit=$no"/>
</f:grid>
</faces>
</body>
</html>

            <@item   key="no"  title="Urun no" />
            <@item   key="ad" title="Urun adı"/>
            <@item   key="fiyat" title="fiyat"/>
            <@item  input="img"  key="resim" title="Resim"/>
            <@item  input="link" title="Detay"  url="testet.php?edit=$no"/>
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Header Nesnesi İle View Dosyasına Başlık etiketleri eklemek

0

Tarih : 09-11-2009 | Yazan : Hüseyin Bora | Kategori : PHP, PHP Faces

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>
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

PHP Faces ile Dosya Upload

0

Tarih : 09-11-2009 | Yazan : Hüseyin Bora | Kategori : PHP, PHP Faces

File bileşeni tarayıcıda bir dosya upload kutusu oluşturur ve gönderilen dosyayı upload metodu ile sunucu üzerinde upload işlemini gerçekleştir. File etiketinin path niteliğine sunucuya trafnsfer edilen dosyanın kayıt edileceği dizin yazılmalıdır.

Örnek Dosya Upload
View Dosyası upload bileşeninin tanımlanması

<html>
<head>
<title>Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="f" taglib="phpf.ui.*"/>
<f:form id="form">
<f:file id="dosya" path="resimler"/>
<f:button id="b" text="Yükle" onclick="actionevent" forname="form"/>
</f:form>
</faces>
</body>
</html>

Örnek Upload  Kontrolcüsü

<?php

import("phpf.controllers.facete");
class DosyaYukle extends Facete {

public function DosyaYukle() {

parent::Facete();
$this->render("yukle.html");
}
function buttonClicked($evt){
$this->resimler->upload();
}
}
?>

FileValidator ve File Bileşeni ile Upload

FileValidator file bişeleni ile birlikte kullanılır örneğin belli boyuttun üzerindeki dosyaların yüklenmemesini ya da belli dosya formatlarının yüklenmesi gerekebilir. FileValidator sınıfının 3 metodu bulunur length (kabul edilen en fazla dosya boyutu)tyeps (Kabul edilen dosya formatları) exists(aynı dosya adında başkabir dosanın blunması durumu)

Örnek Boyutu 50000 den küçük olan GIF ve JPG formatlarını sunucu ya yüklemek

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<faces>
<@import prefix="f" taglib="phpf.ui.*"/>
<f:form id="form">
<f:file id="file" path="resimler/"    length="50000"
validator="filevalidator"
rule="types,length" types="image/jpeg,image/gif"
message="Desteklenmeyen Dosya Formatı,50000 byte tan büyük dosya"
messagefor="hata,hata"/>
<f:message id="hata"/>
<f:button id="b" text="Yükle" onclick="actionevent" forname="form"/>
</f:form>
</faces>
</body>
</html>

PHP tarafı

<?php

import("phpf.controllers.facete");

import("io.filevalidator");
class DosyaYukle extends Facete {

public function DosyaYukle() {

parent::Facete();
$this->render("yukle.html");
}
function buttonClicked($evt){
$this->resimler->upload();
$this->hata->setText("Dosya Yüklendi..");
}
}
?>

<?php 
import("phpf.controllers.facete");
class DosyaYukle extends Facete {
    public function DosyaYukle() {
        parent::Facete();
        $this->render("yukle.html");
    }
    
     function buttonClicked($evt){
         $this->resimler->upload();
     } 
}
?>
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)