Choď na navigáciu
Nálepky: php CakePHP

Controller bez modelu, model bez tabuľky

Niekedy môžu nastať situácia, že budeme potrebovať len Controller a príslušný model nám bude zbytočný. V článku predstavím jednoduché riešenie takejto situácie.

Predstavme si situáciu, že chceme mať controller a v ňom akciu, ktorá nám zobrazí formulár. Po jeho odoslaní nám vyplnené dáta odošle na email. Z tejto situácie je jasné, že model a k nemu databázovú tabuľku potrebovať nebudeme. Takýchto situácií môže byť celá rada, takže nasledujúce riešenia nám môže byť užitočné.

1. Controller bez modelu

class CareersController extends AppController {
     var $name = 'Careers';
     // funguje taktiez
     // var $uses = null;
     var $uses = array();
}

Ako môžeme vidieť, použiť môžeme dva spôsoby a to buď var $uses = null alebo var $uses = array(). Druhý spôsob môžeme využiť aj spôsobom, že model síce vytvoríme, ale k danému modelu nebude existovať tabuľka v databáze.

2. Model bez tabuľky

class Career extends AppModel {
        var $name = 'Career';
        var $useTable = false;
}

class CareersController extends AppController {
     var $name = 'Careers';
     var $uses = array('Career');
}

Ako môžeme vidieť, direktívou var $useTable = false povieme modelu, že k nemu nemáme vytvorenú tabuľku v databáze.

Stiahnuť zdrojové kódy k článku

Povedz o článku aj ostatným - www.pridej.cz

Hodnotenie článku: 35%
Počet hodnotení: 34

zlýdobrý

Komentáre k článku

Nový komentár

  1. Titulok: clanky
    Autor: greppi
    Vytvorený: 12. 03. 2008 07:55

    mne sa taketo clanky pacia, sice su trocha kracsie, ale myslim si ze pre kazdeho kto je novy v CakePHP je to velka pomoc … dakujem a tesim sa na dalsie :)

  2. Titulok: suhlas
    Autor: huco
    Vytvorený: 12. 03. 2008 10:41

    Suhlasim s greppim. Rad by som uvital aj castejsie prispevky, ale chapem ze casu niekdy nie je dost. Ja som tento problem controlleru bez modelu riesil prave vcera. Potreboval som zobrazovat staticku stranku, pri ktorej som potreboval aby sa konvencia tvorby adresy nemenila. Cize ak chcem zobrazit adresu v podobe www.cosi.sk/kdesi a nie v podobe www.cosi.sk/pages/kdesi co je standardne v Cake-u pre staticke stranky. Pre doplnenie este uvediem, ze v pripade takehoto pouzitia controlleru je potrebne nadefinovat aj prazdnu metodu index, inaksie Cake bude hlasit

    Error:  The action index is not defined in controller

    Takze celkove moj kod vyzeral takto nejak:

    class CareersController extends AppController {
    
            var $name = 'Careers';
            var $uses = array();
            var $helpers = array('Html', 'Form');
            var $layout = 'nejaky_vas_layout';
    
            function index()
            {
            }
    
    }
  3. Titulok: RE: clanky
    Autor: Tibor
    Vytvorený: 12. 03. 2008 17:33

    Teraz som sa sustredil na dokoncenie novej verzie fantoma. Nova verzia uz bude skutocne na urovni a umozni mi plnohodnotne pracovat :-)

    Dufam, ze tych clankov bude uz len pribudat coraz viac, ale na druhej strane teraz vydavam tak jeden za tyzden, co nie je tiez az take hrozne :-)