daj więcej kodu
2 2010-11-02 11:23:31
Odp: autoryzacja w wszystkich kontrolerach, app_controller.php (2 odpowiedzi, napisanych Uwierzytelnianie i autoryzacja)
Wielu ludzi zakłada, że we frameworkach jest więcej magii niż jest faktycznie. Staraj się nie zapominać o podstawach OOP i praca z cakePHP będzie łatwiejsza.
w ResidentsController nadpisujesz beforeFilter i tracisz konfigurację z AppController (Auth działa na podstawie domyślnych ustawień i stąd error z nieistniejącym kontrolerem UsersController):
ResidentsController extends AppController{
function beforeFilter(){
parent::beforeFilter();
//...
}Poza tym wywal login/logout z AppController - nie są to akcje, które mają być dostępne w każdym kontrolerze, który dziedziczy po AppController. One powinny siedzieć w ResidentsController. Analogicznie widoki: /app/views/residents/login.ctp
Mam nadzieję, ze pomogło ![]()
3 2010-07-30 09:46:54
Odp: Paginate i order (5 odpowiedzi, napisanych Model-Widok-Kontroler)
a masz zdefiniowane relacje? Wrzuć więcej kodu, przede wszystkim model.
4 2010-07-05 13:26:45
Odp: Problem z AppController (4 odpowiedzi, napisanych Ogólne)
a wrzuć jeszcze kod kontrolera, który wywołujesz...
5 2010-06-21 11:46:06
Odp: Cache trochę inaczej (10 odpowiedzi, napisanych Ogólne)
Mnie się nie podoba sprawdzanie ilości rekordów i decydowanie czy cache jest aktualny.
Dobry cache to taki, że
- przed wywołaniem find'a wiesz jak się nazywa plik, w którym wyniki wykonania find'a z danymi parametrami mogą się znajdować
- jeśli pliku nie ma - wywołuję find'a i zapisuję cache
Pliki cache mogą się nazyważ ModelName_jakiś_unikalny_string_wyliczalny_z_argumentów_find
Wtedy w afterSave (Delete itd.) możesz usuną pliki cache ModelName_*
Gdyby to zrobić ze sprawdzaniem ilości to w pesymistycznym wypadku wykonujesz
Select count(*) from news;
unserialize($dane_z_pliku_cache);
// ilość się nie zgadza
Select * from news;
To już lepiej od razu wykonać Select * from news; i włączyć memchache.
6 2010-06-08 15:57:27
Odp: Wstawianie obrazu do maila (3 odpowiedzi, napisanych Ogólne)
7 2010-05-06 05:27:10
Odp: Skomplikowane zapytanie do bazy, jak go wykonać? (3 odpowiedzi, napisanych Ogólne)
Nie tylko ładniejsze, ale bardziej poprawne. W specyficznym modelu układając query musiałbyś je budować tak:
"SELECT * FROM `".$this->tablePrefix.$this->table."` As ".$this->name." ..."Sporo klepania po to, żeby po zmiania na przykład prefixu w configu dla bazy aplikacja się nie posypała. Bez tego też nie będę działać testy jednostkowe. A cały ten sposób budowania query jest znany klasie Model, więc naruszasz zasadę DRY oraz zamiast używać przetestowanej metody frameworka - dublujesz ją (tworzysz nowe miejsce na nowe bugi).
8 2010-05-06 05:19:32
Odp: Walidacja z oficjalnej dokumentacji (5 odpowiedzi, napisanych Ogólne)
Ta metoda wywoływana jest przez metodę save() modelu, więc nie trzeba jej odpalać ręcznie w kontrolerze.
9 2010-04-15 22:16:08
Odp: Tutorial - fajny layout w cakephp przy użyciu jQuery (2 odpowiedzi, napisanych Wasze projekty)
dzięki za podpowiedź, będę miał to na uwadze ![]()
10 2010-04-15 13:18:13
Odp: Problem z ograniczaniem ilości złączeń tabel w paginacji (5 odpowiedzi, napisanych Ogólne)
No tak, faktycznie z tym contain to mnie fantazja poniosła.
A mogę zapytać, czemu te dane Ci przeszkadzają? Bo nie wpływają one na rozmiar zapytania, ponieważ tak czy siak musi być wykonany join z tabelą pośrednią.
Czy Twoja tabela pośrednia przechowuje jakieś dodatkowe dane, czy tylko klucze? Jeśli tylko klucze, to czy masz dla niej stworzony model i przy relacji Note habtm Tag masz parametr "with"?
11 2010-04-15 11:31:34
Odp: Problem z ograniczaniem ilości złączeń tabel w paginacji (5 odpowiedzi, napisanych Ogólne)
spróbuj:
'contain' => array(
'Note' => array(
'order' => 'Note.created DESC',
'fields' => array('Note.id', 'Note.created'),
'contain' => array()
)
)12 2010-04-11 08:51:53
Odp: Dwie aplikacji, ale jeden webroot, da się tak? (3 odpowiedzi, napisanych Instalacja i konfiguracja)
Nie do końca rozumiem jak to masz dwie identyczne aplikacje, ale rozdzielasz kontrolery i modele, ale tylko webroot masz wspólny?
No, ale stała WWW_ROOT służy do ustawienia ścieżki do Twojego webroot (http://book.cakephp.org/view/122/Core-D … -Constants)
13 2010-04-07 12:04:42
Odp: Walidacja z oficjalnej dokumentacji (5 odpowiedzi, napisanych Ogólne)
spróbuj tak:
var $validate = array(
'title' => array(
'notempty' => array(
'rule' => array('notempty'),
//'message' => 'Your custom message here',
//'allowEmpty' => false,
//'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),(możliwe, że tutorial nie nadąża za 1-3.)
14 2010-03-23 14:47:35
Odp: Skomplikowane zapytanie do bazy, jak go wykonać? (3 odpowiedzi, napisanych Ogólne)
Mam takie oto query:
SELECT ( ( ROUND( ( SUM( t1.rate ) / COUNT( t1.id ) ) , 2 ) ) * COUNT( t1.id ) ) AS ocenaKoncowa, ROUND( ( SUM( t1.rate ) / COUNT( t1.id ) ) , 2 ) AS ocenaPostow, COUNT( t1.id ) AS ilePostow, t1.user_id, t2.username AS user
To wrzucasz jako "fields"
WHERE t1.user_id = t2.id AND t2.id !=2 AND t2.id !=30 AND t2.id !=109 AND t2.id !=33 AND t1.created >= DATE_SUB( CURDATE( ) , INTERVAL 1 week )
to jako "conditions"
GROUP BY t1.user_id ORDER BY ocenaKoncowa DESC LIMIT 0 , 10
a to jako "group", "order" i "limit"
Czyli z grubsza będzie to wyglądało tak:
$this->Post->find(
"all",
array(
"fields" => array(
"ROUND( (
SUM( Post.rate ) / COUNT( Post.id ) ) , 2
)) * COUNT( Post.id )",
"ROUND(...)"
)
"conditions"=>array(
//Twoje warunki
)
"group" => "...",
"order" => "...",
"limit" => "..."
)
);15 2010-03-08 13:22:44
Odp: AJAX Helper wykorzystujący jQuery (2 odpowiedzi, napisanych Wtyczki (Pluginy))
jak jest dobry, to wrzuć jak człowiek na bakery. Na tym hostingu nie mogłem się doczekać na załadowanie strony ![]()
16 2010-02-24 17:18:34
Temat: Tutorial - fajny layout w cakephp przy użyciu jQuery (2 odpowiedzi, napisanych Wasze projekty)
Cześć wszystkim, pewnie trochę mnie znacie - czasem odezwę się na forum. Wrzuciłem swój pierwszy dłuższy poradnik/tutorial (do tej pory głównie krótsze teksty) jak zrobić taki dashboard web 2.0 jak tutaj: http://cakephp.grzegorzpawlik.com/tutorial1/, będę wdzięczny za jakiś feedback od ludzi, którzy w cake'u siedzą.
Tekst jest dostępny tutaj: http://blog.grzegorzpawlik.com/2010/02/ … a_leniwyc/
Dzięki!
17 2010-02-24 17:04:54
Odp: e-commerce z wykorzytsaniem cakephp (6 odpowiedzi, napisanych Wasze projekty)
Robal, z skąd jesteś? Jak z Krakowa, to napisz do mnie. W firmie, w której pracuję robimy coś podobnego (z dofinansowaniem UE - blee). Jak szukasz roboty, to odezwij się proszę (nie mogę osobiście Cię przyjąć, ale mogę podszepnąć coś szefom).
18 2010-02-16 11:05:03
Odp: problem z konsolą. nazwa 'php' nie jest rozpoznawana (5 odpowiedzi, napisanych Instalacja i konfiguracja)
czasem warto pokombinować i zamiast
./cake bake
użyć
php cake bake
albo
cake.bat bake (pod windą)
albo
php cake.php bake
Moje doświadczenia są takie, że któryś w końcu daje radę ![]()
19 2010-02-16 10:39:20
Odp: Problem z relacją M:N (HABTM) (1 odpowiedzi, napisanych Ogólne)
Jeśli tabela pośrednia nie będzie zawierać dodatkowych informacji, to nazywasz ją products_sizes, a w modelaach:
class Product extends AppModel{
var $hasAndBelongsToMany = array("Size");
}
(dla modelu Size: array("Product"))
I Tyle. Nie musisz robić modelu dla tabeli pośredniej.
Jeśli potrzebujesz dane w tabeli pośredniej (np. ilość sztuk produktu w danym rozmiarze), to tworzysz model
ProductsSize, a w pozostałych dwóch modelach:
var $hasAndBelongsToMany = array("Size" =>
array(
"className" => "Size",
"with" => "ProductsSize"
)
);
}
dzięki "with" cake będzie wiedział, że dodatkowo ma wyciągnąć dane z tabeli pośredniej. Dla modelu ProductsSize możesz też zdefiniować relacje jeśli potrzebujesz ![]()
Jeśli nie trzymasz się konwencji cake'a to będziesz musiał definiować w relacjach "joinTable", "foreignKey", "associationForeignKey" -> ogólnie więcej roboty...
20 2010-01-02 03:48:24
Odp: paginate('Model.metoda') (4 odpowiedzi, napisanych Model-Widok-Kontroler)
A możesz napisać co ta Twoja metoda robi? Może można poprawić projekt, żeby inaczej ugryźć Twój problem? Ja nigdy nie spotkałem się z taką potrzebą, o której Ty piszesz....
21 2009-12-31 11:09:04
Odp: paginate('Model.metoda') (4 odpowiedzi, napisanych Model-Widok-Kontroler)
Jeśli dobrze zrozumiałem to co napisałeś - to nie jest możliwym zrobić to w taki sposób. Domyślam się, że Twoja metoda w modelu robi jakieś query, prawdopodobnie zainteresuje Cię to: http://book.cakephp.org/view/249/Custom … Pagination
22 2009-12-28 11:18:32
Odp: Użytkownicy online - problem z app_controll.php (8 odpowiedzi, napisanych Ogólne)
jeśli 1.2 spróbuj ClassRegistry::init()
23 2009-12-28 11:17:29
Odp: Problem (1 odpowiedzi, napisanych Ogólne)
w core.php ustaw debug na mniej niż 2
24 2009-12-19 17:42:04
Odp: Jak policzyć ilość postów w danej kategorii? (4 odpowiedzi, napisanych Model-Widok-Kontroler)
dodaj pole Category.post_count w bazie, i w relacji użyj pola couterCache:
http://book.cakephp.org/view/816/counte … your-count
25 2009-11-30 14:38:20
Odp: belongsTo w pluginach (1 odpowiedzi, napisanych Wtyczki (Pluginy))
Plugin: Forum
class Post extends ForumAppModel {\
...
var $belongsTo = array("Forum.Topic");
}