14 Eylül 2007 Cuma

Component.startup mı yoksa Controller.beforeFilter metodu 'mu önce çağrılıyor ?

Acı bir tecrübe ile öğrendim, ki controller.beforeFilter önce çağrılıyor :)

Örneğin aşağıdaki gibi bir component'iniz olsun :

class MyComponent extends Object {
function startup() {
pr('Hello I am component')
}
}

ve bu component'i kullanan bir controller :

class MyController eztends AppController {
var $components = "MyCompenent";

function beforeFilter() {
pr('Hello I am controller')
}
}

Eğer bir view'a yönlendirirseniz sonuç şöyle olacaktır :

Hello I'am controller
Hello 'am component

Önemli Hatırlatmalar

Cannot send session cache limiter ............


İle başlayan bir hata aldığınızda, hata olduğu söylenen dosyaya dikkatle bakın. Herhangi bir şekilde php açılışı "" sonrasında boşluk da dahil hiç bir şey olmamalı aksi taktirde bu saçma hatayı alıyorsunuz.

Bknz : http://cakebaker.42dh.com/2006/10/30/cannot-send-session-cache-limiter/

7 Eylül 2007 Cuma

8. İlk yardımcı (Helper) 'mı yazdım :)

İlk yardımcımı dün gece yazdım. Verilen bir karakter katarı içerisinden tr karakterlerden karşılığı olanların ingilizce karşılıkları ile değiştirip olmayanları ise '_' ile değiştirip size veriyor. Benim çok işime yaradı belki size de bir faydası olur. Dosyayı views/helper dizininde tutmanız gerekiyor.

class LinkToHtmlHelper extends Helper {

function getHtml($phrasetoHtml) {

$phrase = trim($phrasetoHtml);
$trchars = array(" ", "-", "ı", "İ", "ğ", "Ğ", "ş", "Ş", "ü", "Ü", "ö", "Ö", "ç", "Ç");
$engchars = array("_", "_", "i", "I", "g", "G", "s", "S", "u", "U", "o", "O", "c", "Ç");
$newphrase = str_replace($trchars, $engchars, $phrase) . '.html;';

return $this->output($newphrase);
}
}

Nasıl kullanacam derseniz, diğre helperlar gibi. Controller içinde tanımlayıp;

var $helpers = array ( 'LinkToHtml' );


View içinde ;

->getHtml(text); ?>

çağırabilirsiniz.

7. Tablosu olmayan mode nasıl yazılır ?

Eğer herhangi bir tablo ile ilişkisi olmayan bir model yazmak isterseniz, aşağıdaki örneğe benzer bir yol takip etmelisiniz.

class MyModel extends Model{
var $useTable = false;
}

Eğer “var $useTable = false;” yapmazsanız, “missing table” hatası alırsınız.

4 Eylül 2007 Salı

6. Model'i olmayan controller nasıl yazılır ?

Eğer herhangi bir model ile ilişkisi olmayan bir controller yazmak isterseniz, aşağıdaki örneğe benzer bir yol takip etmelisiniz.

// tested with CakePHP r1892
class MyController extends AppController
{
// var $uses = null; works too
var $uses = array();

function index(){
}
}

Eğer “var $uses = array();” yapmazsanız, “missing model” hatası alırsınız.

Detay için : Controller without a model

2 Eylül 2007 Pazar

5. Önemli uyarı, her şey düzgün görünüyor ama aşağıdaki mesaj da ne ?

Eğer her şey normal görünüyor, ama aşağıdaki mesajdan bir türlü kurtulamıyorsanız, ilk olarak veritabanı sunucusunu açıp açmadığınızı kontrol etmenizi öneririm. DEBUG sevyesi 0 ise, detaylı ve gerçek sorunu öğrenmeniz mümkün değil, sürekli aşağıdaki hatayı alırsınız, ve benim gibi saçlarınızı yolabilirsiniz :(

Not found


The requested address was not found on this server.