Czytuję Twojego bloga regularnie. Co do artykułu jedno zastrzeżenie natury estetycznej. Przy tak długim tekście przydałby się podział na akapity albo na "rozdziały" z własnymi tytułami. Zwiększyłoby to komfort czytania. Poza tym szczegółem tekst opisuje ciekawą tematykę i jest dobrze napisany.
1 2010-04-15 20:09:01
Odp: Tutorial - fajny layout w cakephp przy użyciu jQuery (2 odpowiedzi, napisanych Wasze projekty)
2 2010-04-15 17:32:06
Odp: Problem z ograniczaniem ilości złączeń tabel w paginacji (5 odpowiedzi, napisanych Ogólne)
Twoja wypowiedz zwróciła moja uwagę na jedną rzecz. Rzeczywiście moja tabela notes_tags zawiera dodatkowe pole - id - oprócz kluczy z łączonych tablic. Musiałem wstawić je z rozpędu podczas projektowania bazy. Po usunięciu orm zwraca wynik taki, jakiego się spodziewałem. Dzięki za pomoc!
Te dane nie wpływają na rozmiar zapytania, ale pewnie mają wpływ na czas komunikację serwer www - baza danych. Oczywiście przy małych projektach nie ma to większego znaczenia. Zastanawiałem się natomiast co by było, gdyby tabela łącząca trzymała kilka - kilkanaście pól z danymi. No i najbardziej prozaiczny powód mojego zainteresowania tym tematem: fajnie by było mieć pełną kontrolę nad tym co jest wyciągane.
3 2010-04-15 12:57:16
Odp: Problem z ograniczaniem ilości złączeń tabel w paginacji (5 odpowiedzi, napisanych Ogólne)
Niestety to nie przejdzie. Contain można użyć tylko jeden raz w warunkach przy głównym modelu, po którym wyszukuję (próbowałem tego rozwiązania
). Zastanawiam się właśnie, czy przypadkiem nie jest tak, że jedynym sposobem będzie pisanie zapytania z palca?
Przy dopinaniu ContainableBehaviora do modelu jest możliwość ustawienia parametru recursive, ale działa to tak samo jak przy wpisywaniu w warunkach paginacji - wyświetla wszystko albo nic.
4 2010-04-15 07:59:22
Temat: Problem z ograniczaniem ilości złączeń tabel w paginacji (5 odpowiedzi, napisanych Ogólne)
Mam problem z ograniczeniem "głębokości" tabel z jakiej wybierane są dane podczas paginacji.
Działam na następującym zestawie:
Tag <--habtm--> Note
Warunki w paginacji wyglądają tak:
$this->paginate = array(
'Tag' =>array(
'recursive' => 1,
'conditions' => array(
'Tag.id' => $id
),
'fields' => array(
'Tag.id',
'Tag.tag',
),
'contain' => array(
'Note' => array(
'order' => 'Note.created DESC',
'fields' => array('Note.id', 'Note.created'),
)
)
)
);
$notes = $this->paginate('Tag');Wyniki jest w takiej postaci:
Array
(
[0] => Array
(
[Tag] => Array
(
[id] => 3
[tag] => praca
)
[Note] => Array
(
[0] => Array
(
[id] => 2
[created] => 2010-04-15 07:32:38
[NotesTag] => Array
(
[id] => 3
[note_id] => 2
[tag_id] => 3
)
)
[1] => Array
(
[id] => 1
[created] => 2010-04-14 14:40:29
[NotesTag] => Array
(
[id] => 1
[note_id] => 1
[tag_id] => 3
)
)
)
)
)Problemem jest to, że razem z rekoradami tabeli Note wybierane są dane z tabeli habtm NotesTag. Kombinowałem z $recursive - na poziomie 0 wybierają tylko dane Tag a na 1 wszystko tak jak widać wyżej.
Zastanawiam się nad tym już dobry dzień i skończyły mi się pomysły.
5 2009-04-23 20:20:13
Temat: Ostatnio aktywny temat w kolumnie ostatni post na stronie głównej. (0 odpowiedzi, napisanych Opinie, sugestie)
Jak dla mnie przydałaby się właśnie taka modyfikacja skryptu i umieszczenie nazw tematu w którym padła najnowsza odpowiedz w kolumnie na stronie głównej.
Druga sprawa - przydałyby się też link do dzisiejszych postów - do wyszukiwania jednym kliknięciem tematów, w których nastąpiła aktywność danego dnia.
6 2009-04-23 15:57:14
Odp: $ajax->observeField i błąd form is not defined (4 odpowiedzi, napisanych Ogólne)
Miałeś rację, prototype był źle podlinkowany. Konkretnie w default.ctp umieściłem:
echo $javascript->link(array('prototype'));W katalogu /home/meq/workdir/cake/app/webroot/js/prototype wrzuciłem plik: prototype-1.6.0.3.js
Zmiana nazwy na prototype.js załatwiła sprawę.
Dzięki bardzo za pomoc.
7 2009-04-23 09:24:40
Odp: $ajax->observeField i błąd form is not defined (4 odpowiedzi, napisanych Ogólne)
Na początek wystarczy, żeby ten kod działał pod ff.
Rzeczywiście, nie doczytałem dokumentacji odnośnie tego, że w observeField trzeba użyć id. Zamieniłem odpowidenie pola, tak że nazwy id są już odpowiednie, Błąd nadal występuje.
Form is not defined
new Form.Element.Observer('ChapterCourseId', 1, function(element, value) {new Ajax.Updater('QuestionChapterId','/questions/update_select', {asynchronous:true, evalScripts:true, parameters:Form.Element.serialize('ChapterCourseId'), requestHeaders:['X-Update', 'QuestionChapterId']})})
40//]]>Tak się zastaawiam, czy do wykonania tego potrzebuję prototype + scriptaculous? Czy samo prototype wystarczy?
8 2009-04-22 23:18:52
Temat: $ajax->observeField i błąd form is not defined (4 odpowiedzi, napisanych Ogólne)
Witam. Zaczynam przygodę z cake i trafiłem na rzecz z którą nie mogę sobie poradzić.
Tworzę formularz (w widoku):
<?php echo $form->create('Question');?>Umieszczam w nim dwa pola, które mają być od siebie zależne (tzn. pole chapter_id od course_id).
echo $form->input('Chapter.course_id');
echo $form->input('Question.chapter_id');
echo $ajax->observeField('Chapter.course_id', array('url' => '/questions/update_select','update' => 'Question.chapter_id'));W efekcie firebug rzuca mi takim błędem:
Form is not defined
add()()
new Form.Element.EventObserver('course_id', function(element, value) {new Ajax.Updater('Question.chapter_id','/questions/update_select', {asynchronous:true, evalScripts:true, parameters:Form.Element.serialize('course_id'), requestHeaders:['X-Update', 'Question.chapter_id']})})
40//]]>Ktoś ma pomysł o co chodzi?