Temat: Nazwy tabel a nazwy w MVC

Witam, w cake stawiam właściwie swoje pierwsze kroki.

Mam np. 2 tabele w bazie danych i tworzę w katalogu views podkatalogi kategorie, news gdzie umieszczam index.thtml

w controllers są pliki
news_conrtoller.php

<?php
class NewsController extends AppController
{
var $name = "News";
public function index()
{
$this->set('News', $this->News->findAll());
}
}
?>


kategorie_controller.php

<?php
class KategorieController extends AppController
{
var $name = "Kategorie";
public function index()
{
$this->set("kategorie", $this->Kategorie->findAll());
}
}
?>


a w models

news.php
<?php
class News extends AppModel
{
var $name = "News";
}
?>

kategorie.php

<?php
class Kategorie extends AppModel
{
var $name = "Kategorie";
}
?>


Kiedy wpisuję adres serwer/app/news/ jest o.k. a kiedy serwer/app/kategorie
to mi wywala błąd że oczekiwano tabeli w bazie danych 'kategories'

Jak zmienie na 'kategoria' to że 'kategorium' no i zastanawiam się co zrobić żeby cake nie kombinował sobie z tymi nazwami tabel tylko szukał takiej jak jest w modelu podana.

----------------

$useTable w modelu pomogłoJarosław Ziółkowski edytował(a) ten post dnia 23.01.08 o godzinie 19:18
Maciej G.

Maciej G. Programista
PHP/JavaScript/Flex
Webdeveloper HTML,
CSS

Temat: Nazwy tabel a nazwy w MVC

Nazwy tabel powinny być angielskimi rzeczownikami w liczbie mnogiej. Oczywiści można stosować swoją własną notację, ale stosowanie nie jest to dobry zwyczaj. Pamiętasz, że używasz frameworka. Żeby miało to sens, musisz trzymać się pewnych standardów. Inaczej stracisz wiele zalet korzystania z Cake'a.

Temat: Nazwy tabel a nazwy w MVC

Dzięki pamiętam, ale to niewielki projekt, na dużym wolałbym się frameworka nie uczyć.

Zastanawiam się co zrobić żeby połączyć scaffold z własnym definiowaniem modeli i kontrolerów. Chodzi o powiązania między tabelami. Mam klucz obcy w tabeli z newsami który odwołuje się do id kategorii.

Gdyby użyć scaffold to otrzymam przy funkcji add formularz gdzie z listy będę mógł wybrać pozycje zapisane jako kategorie.

Zastanawiam się czy mogę przy własnej budowie kontrolera i widoku jakoś zgrabnie to rozwiązać, czy po prostu pobrać osobną metodą dane z kategorii i wypełnić nimi listę wyboru.
Maciej G.

Maciej G. Programista
PHP/JavaScript/Flex
Webdeveloper HTML,
CSS

Temat: Nazwy tabel a nazwy w MVC

Jeżeli masz dobrze zdefiniowane asocjacje między modelami, to scaffold, czy też bake, powinien dodać listę rozwijaną z elementami kategorii. Upewni się tylko, czy news belongsTo categories.

Temat: Nazwy tabel a nazwy w MVC

scaffold dodaje, chodzi mi o to, żeby nie używając scaffold dodać łatwo taką listę.
Maciej G.

Maciej G. Programista
PHP/JavaScript/Flex
Webdeveloper HTML,
CSS

Temat: Nazwy tabel a nazwy w MVC

Dla taki rozwiązań jest skrypt Bake.
Znajduje się on w katalogu Cake/Scripts/bake.php.
Możesz go odpalić za pomocą php z linii komend będąc i wpisując w tym katalogu: php bake.php , z tym że wcześniej musisz dodać ściężkę do php.exe jako zmienną środowiskową. Inaczej będzie konieczne wejście do katalogu z php.exe i stamtąd podanie pełnej ścieżki do skryptu bake. Jeżeli używasz eclpisa, to tutaj :
http://bakery.cakephp.org/articles/view/setting-up-ecl...

A teraz, co to robi :)
Za pomocą tego skryptu wygenerujesz pliki Modeli, Kontrolerów i Widoków dla dowolnej tabeli BD w ciągu kilku minut. Ich działanie powinno być identyczne do tego co daje Ci w tej chwili scaffold.

W razie pytań, zapraszam na forum http://cakephp.org.pl
Pozdrawiam!
Jakub Wietrzyk

Jakub Wietrzyk Prezes, Projektant,
Programista, Media
IT Sp z o.o.

Temat: Nazwy tabel a nazwy w MVC



Jak zmienie na 'kategoria' to że 'kategorium' no i zastanawiam się co zrobić żeby cake nie kombinował sobie z tymi nazwami tabel tylko szukał takiej jak jest w modelu podana.

w /app/config/inflections.php mozesz sobie ustawic "nieregularna" odmiane polskiego rzeczownika, w twoim przykladzie:

$irregularPlural = array('kategorie' => 'kategorie');

ale zalecalbym trzymanie sie konwencji cake i stosowanie liczby mnogiej dla kontrolera i pojedynczej dla modelu

class Kategoria extends AppModel {
....

i $irregularPlural = array('kategoria' => 'kategorie');

Pozdrawiam
KubaJakub Wietrzyk edytował(a) ten post dnia 04.02.08 o godzinie 16:10



Wyślij zaproszenie do