Daniel Częstki

Daniel Częstki senior php developer

Temat: Konwencja nazw w cakePHP

Tak sobie siedzę i zastanawiam się jak to zrobić:

Stan pierwotny (moja konwencja):
Mam tabele w bazie o nazwie config
kontroler nazywa się config
akcja nazywa się index

W cakePHP musze zrobic (przynajmniej wg. dokumentacji)
model o nazwie Config
kontroler o nazwie ConfigsController
i tabele na bazie o nazwie: configs

w kontrolerze i tabeli dodaje na końcu literkę "s".

wywołuję to tak:
http://cake.loc/configs/index

interesuje mnie jednak aby wywoływac to bez literki "s" czyli
http://cake.loc/config/index
bo nie lubię liczby mnogiej.

więc zmieniłem nazwę klasy kontrolera na ConfigController
i działa. Niestety nie mogę zmienić

Czy jednak może to mieć negatywny wpływ na aplikację ?

Druga sprawa jeżeli chodzi o tabele.
Czy pola definiujące datę i czas dodania oraz aktualizacji rekordu muszą nazywać się odpowiednio do tego aby cake automatycznie wypełnił te pola ?Daniel Częstki edytował(a) ten post dnia 30.12.10 o godzinie 13:57
Daniel Częstki

Daniel Częstki senior php developer

Temat: Konwencja nazw w cakePHP

dobra:
Każda tabela, której używamy w projekcie musi zawierać 3 pola:
* id auto_increment
* added datetime default null
* modified datetime default null
Kamil Kosiński

Kamil Kosiński CTO w
DobryMechanik.pl

Temat: Konwencja nazw w cakePHP

Druga sprawa jeżeli chodzi o tabele.
Czy pola definiujące datę i czas dodania oraz aktualizacji rekordu muszą nazywać się odpowiednio do tego aby cake automatycznie wypełnił te pola ?

Tak: created, updated, modified.
Jeśli bardzo Ci zależy na innym nazewnictwie pól, to możesz je obsłużyć w beforeSave modelu.
Kamil Kosiński

Kamil Kosiński CTO w
DobryMechanik.pl

Temat: Konwencja nazw w cakePHP

Stan pierwotny (moja konwencja):
Mam tabele w bazie o nazwie config
kontroler nazywa się config
akcja nazywa się index

W cakePHP musze zrobic (przynajmniej wg. dokumentacji)
model o nazwie Config
kontroler o nazwie ConfigsController
i tabele na bazie o nazwie: configs


Nie powinno być problemów. Jeśli gdzieś będą oczekiwania co do liczby mnogiej/pojedynczej to zawsze da się to zmienić poprzez konfigurację.

Nazwę tabeli możesz zmienić w modelu za pomocą $useTable.

Nazwę modelu za pomocą $uses w kontrollerze. Domyślnie szukana jest liczba pojedyncza z kontrolera. Jeśli nie będzie znaleziona, to cake utworzy model "w locie", więc tak naprawdę, jeśli w samym modelu nic nie masz, to nie musisz go nawet tworzyć.
Marcin B.

Marcin B. Webdirector,
Wspólwłasciciel
Contip.net

Temat: Konwencja nazw w cakePHP

Daniel Częstki:
więc zmieniłem nazwę klasy kontrolera na ConfigController
i działa. Niestety nie mogę zmienić

Czy jednak może to mieć negatywny wpływ na aplikację ?

Na razie działa, ale nie wiesz, co będzie dalej :) Generalnie powinieneś trzymać się konwencji, a jeśli chcesz mieć wymarzonego URLa z liczbą pojedynczą, to zrób sobie odpowiednią regułę w routes.php:
Router::connect(
'/config/:action/*', array('controller' => 'configs', 'action' => 'index')
);


Tym sposobem masz eleganckie i zgodne ze sztuką rozwiązanie.

Następna dyskusja:

Jak przyspieszyc CakePHP?




Wyślij zaproszenie do