Modunda CakePHP'de Fonksiyon yürütme değil

2 Cevap php

Ben gibi benim Comic Modeli'nde bir işlevi var:

<?php

class Comic extends AppModel
{
    var $name = "Comic";
    // Methods for retriving information.
    function testFunc(){
        $mr = $this->find('all');
        return $mr;
    }
}
?>

Ve ben gibi benim denetleyicisi bunu arıyorum:

<?php
class ComicController extends AppController
{
   var $name = "Comic";
   var $uses = array('Comic');
   function index()
   {
  }
  function view($q)
  {
    $this->set('array',$this->Comic->testFunc());
  }
}
?>

Ben sayfayı yüklemeye çalıştığınızda; Ben şu hatayı alıyorum:

Warning (512): SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'testFunc' at line 1 [CORE/cake/libs/model/datasources/dbo_source.php, line 525] Query: testFunc

Ve SQL dökümü şöyle:

(default) 2 queries took 1 ms
Nr Query Error Affected Num. rows Took (ms)
1 DESCRIBE comics 10 10 1
2 testFunc 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'testFunc' at line 1 0

Yani bunun yerine () işlevi testFunc çalışan, bu "testFunc" bir sorgu çalıştırmak için çalışıyor ve başarısız oluyor gibi görünüyor ...

2 Cevap

Tamam, ben nihayet aynı hatayı yeniden başardı. Ben hata Cake "automagically" it denetleyicisi uyan bir model bulamadıkları zaman öyle, hangi modeli işlevsellik yaratmaya çalıştığı şüpheli. Peki, ben yaptım denetleyicisi (app/controllers/comic_controller.php) fakat bir model oluşturmak oldu. Ben orijinal et kesin denetleyicisi kod kullanılır, ve ben Comic::view eylemi çağırmak çalıştım, ben aynı hata var.

Ben sadece Cake adlandırma sözleşmeler gelen diğer hareketle benzer, komik bir şekilde model dosyası (örneğin, app/models/comics.php) Kek bulmak mümkün olduğu gibi adlandırılmış özgün poster ve telafi etmek için çalıştı, sonucuna varabiliriz büyü ile. Ve başarısız oldu.

Yani, asıl soruya benim ilk yorum altını, ben şiddetle following the conventions tavsiye! Bir şey tatili ne zaman, biliyorum ki en azından, start onları takip ederek, daha sonra, onları bir anda kırmak why.

Bir "Komik" modülü için, burada geleneksel adlandırma düzeni temel bileşenleri şunlardır:

  • Controller:
    • sınıf adı: ComicsController extends AppController
    • dosya adı: app/controller/comics_controller.php
  • Model:
    • sınıf adı: Comic extends AppModel
    • dosya adı: app/controller/comic.php
  • İzlenme dizin: app/views/comics/
  • Veritabanı tablo: comics

Eğer bir var_dump yaparsanız ne olur ($ this-> Comic-> testFunc ())? Çalışması gerektiği gibi olduğu görünüyor. Btw, gerçekten böyle $ dizi ayarlayabilirsiniz? Ben dizi PHP ayrılmış bir sözcük olduğunu düşündüm. Ne olursa olsun, daha açıklayıcı bir şey olduğunu yeniden adlandırmak isteyebilirsiniz (tip dizi, bu yüzden gerçekten bu isimde zaten orada olmayan herhangi bir meta veri eklenirken değil).

Ayrıca, ne CakePHP hata günlüğünde gösterir? Apache hata günlüğüne şey var mı?