CakePHP - základní kostra
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

CakePHP - základní kostraCakePHP - základní kostra

 

CakePHP - základní kostra

Google       Google       5. 7. 2007       18 947×

Pokusíme se vytvořit primitivní webovou aplikaci pracující s databází. Uvidíte, jak je to s Cakem jednoduché.

Reklama
Reklama

Na úvod se řekněme něco o takzvaném routingu. Cake, jako každý jiné framework, nám nejen že url rozparsuje, ale také nám je pomůže sestavit. Sestavení i parsování na sobě vzájemně souvisí, a této oblasti se říká routing. Základní parsování url v Caku vypadá následně:

/controller/action/arg1/arg2/.../argn

Url je rozděleno podle lomítek, první fragment je považován za jméno controlleru, druhý za jeho metodu, a zbytek za argumenty metody. Metodě se někdy také říká action.

Návrh aplikace

Zásadní je návrh aplikace. Každý model reprezentuje jednu tabulku. Je běžné, že každý model má i svůj vlastní controller, který sprostředkovává ony požadavky a operace nad modelem.

Controller třída, která sdružuje skupinu souvisejících akcí (operací) nad jednou tabulkou.

Pomocí Caku můžete routing velmi efektivně "ohnout". Otom ale až někdy příště.

Konfigurace

Než začneme vyvíjet aplikaci, je třeba zprovoznit připojení k databízi. Editujte soubor /app/config/database.php.default a uložte jej jako database.php.

<?php
class DATABASE_CONFIG
{

    var $default = array(
        'driver' => 'mysql',
        'host' => 'localhost',
        'login' => 'root',
        'password' => '',
        'database' => 'test',
        'prefix' => ''
    );

}
?>

Cake se automaticky připojení pomocí nastavení v proměnné $default. Můžete definovat i více připojení, nebo automaticky nastavit správné připojení pro produkční prostředí. Ale o tom opět až příště. Nyní vyplňte vlastní nastavení. Driver závisí na vaší databázi. Většinou postačí nechat mysql.

Jestliže se vše povedlo, po zadání url vaší aplikace do prohlížeče uvidíte stránku podobnou téhle:

Praktická ukázka

Pro dnešní ukázku budeme potřebovat nějakou tabulku. Vytvořte si ji s takovouto strukturou:

CREATE TABLE `pages` (
    `id` tinyint(10) unsigned NOT NULL AUTO_INCREMENT,
    `url` varchar(100) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
    `title` varchar(100) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL,
    `content` longtext CHARACTER SET utf8 COLLATE utf8_czech_ci,
    `modified` int(11) unsigned NOT NULL DEFAULT '0',
    `heavy` smallint(3) NOT NULL DEFAULT '0',
    PRIMARY KEY (`id`,`url`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Stránky';

Scaffolding - lešení

V rané fázi aplikace probíhají ještě časté změny ve struktuře tabulky, respektive databáze. A proto nám Cake nabízí pomocnou ruku. Abychom nemuseli stále přepisovat aplikaci kvůli změnám v databázi, máme k dispozici takzvané lešení. To aktivujeme v controlleru. Ten ale musíme nejprve vytvořit.

Soubor /app/controllers/pages_controller.php:
<?php

class PagesController extends AppController
{
    /*
        jméno třídy: množné číslo názvu tabulky + 'Controller'
        záleží na velikosti písmen
    */

    // aktivujeme lešení
    public $scaffold;

}

?>

Dále je třeba vytvoři model /app/models/page.php:

<?php

class Page extends AppModel
{
    /*
        jméno třídy: jednotné číslo názvu tabulky
        tabulka musí být v množném čísle!!!
        záleží na velikosti písmen
    */

}

?>

Díky členské proměnné $scaffold; controlleru Cake za nás automaticky vygeneruje stránky formuláře pro editaci, přidání, mazání a zobrazení.

Nyní je třeba přejít na URL adresu /pages (např http://localhost/app/pages), protože ještě neumíme nastavit routing, a Cake neví, jaký controller by jsme chtěli zobrazit, když mu bude první fragment chybět.

Nebojte se výpisu SQL dole, to uvidíme jen při ladění. Pořádně si vše vyzkoušejte, těším se u dalšího dílu..

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Jan ŠkrášekHonza pracuje jako webdeveloper, věnuje se vývoji Nette\Database a Nextras komponentám. Mnoho času věnuje komunitnímu portálu signály.cz. Honza je taky fanouškem XML technologií.
Web     Twitter    

Nové články

Reklama
Reklama
Obrázek ke článku Facebook spouští službu Marketplace V ČR

Facebook spouští službu Marketplace V ČR

Společná platforma Marketplace usnadní lidem na Facebooku vyhledávání, nákup a prodej použitého zboží na lokální úrovni. Bude tak přímou konkurencí pro weby a aplikace se stejným zaměřením jako je například Letgo, Bazoš, Aukro, Sbazar a další.

Obrázek ke článku DistrCut – optimalizace pomocí distribuované inteligence

DistrCut – optimalizace pomocí distribuované inteligence

Optimalizační systémy, které jsem dosud popisoval, se týkaly vždy optimalizace na jednom zařízení. Optimalizovalo se dělení tyčového materiálu na jedné pile, vypalování plošného materiálu na jednom plazmovém stroji, řídilo se tavení na jedné elektrické obloukové peci.

Ve výrobním procesu je však často nutné optimalizovat činnost celého výrobního úseku, kde je více různých objektů odlišného typu a koordinovat činnost těchto objektů k dosažení společného cíle, zpravidla kvality finálního výrobku. Řešení tohoto problému umožňuje distribuovaná inteligence.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý