Instalace Nette Framework

Rudolf Svátek 2016-06-27 11:41

Můžeš si stáhnout připravený základ aplikace, jak by měl vypadat po dnešní lekci.

Psát celý systém od začátku není nutné. Spousty práce za tebe udělá nějaký Framework. Máš jich na výběr spousty a když si vyhledáš na Google "PHP Framework", můžeš strávit dny jejich studiem, porovnáváním a výběrem. Já se zamiloval do Nette. Zkoušel jsem i pár dalších, ale nějak jsme si nerozuměli. Proč jsem se tedy pro Nette rozhodl?

  • dbá na bezpečnost. Jestli si na tom jako já, nevíš nikdy přesně jak ošetřit nebezpečné znaky. A jinak se to dělá v SQL dotazech, jinak v JS atd. Nette tohle všechno dělá tak nějak samo a nepustí nic, co by bylo problém
  • vyvíjí to David Grudl, takže spousta materiálů je v češtině, lidi kolem Nette taky mluví česky
  • nabízí spousty pluginů a komponent, takže nemusíš všechno znovu vyvíjet, pokud sám nechceš
  • je zdarma. Používá velmi volnou licenci, která dovoluje použití i v komerčních projektech
  • má úplně bezva ladící nástroje v čele s Tracy

Composer

Jakkoli můžeš získat Nette i jen stažením balíčku, doporučuji používat raději composer. Pokud ho nemáš nainstalovaný, řiď se návodem na https://doc.nette.org/cs/2.4/composer. Pak vstup do složky, ve které máš běžící webové projekty. A tam už jen stačí spustit příkaz:

composer create-project nette/sandbox redakcni-system

Ve složce, kde jsi příkaz spustil, se objeví složka redakcni-system s nainstalovaným frameworkem. není to vlastně jen framework, ale rovnou malá aplikace. Jestli si chceš vyzkoušet jak projekt vypadá, spusť příkazový řádek a zadej pár příkazů:

cd redakcni-system\www
php -S localhost:8000

Tím si spustíš vlastní webový server. Samozřejmě, že pokud provozuješ Apache, nebo jiný webový server, můžeš jej nakonfigurovat tak, že si vytvoříš virtualhost. To už nechám na tobě. Zda to funguje, to poznáš tak, že spustíš prohlížeč a zadáš adresu: http://localhost:8000. Uvidíš něco takového:

Uvítací obrazovka Nette

Instalace balíčků

Výhoda composeru je, že umožní snadnou aktualizaci na novější verzi balíčků, instalaci nových, nebo odstranění již nepotřebných. Naše aplikace bude kromě samotného Nette ještě pár dalších balíčků - pro datagrid, práci s databází, možnost překladu do jiného jazyka a nějaké drobnosti pro vykreslování.

Trochu nevýhoda je, že pokud si nainstaluješ nejnovější Nette, ostatní balíčky nemusí být kompatibilní. Jestli něco nefunguje, chce to trochu laborovat. Další balíčky, které budeme potřebovat, nainstaluješ pomocí příkazů:

composer require o5/grido
composer require dibi/dibi
composer require kdyby/translation
composer require kdyby/bootstrap-form-renderer:@dev
composer require ipub/visual-paginator

Nebo je i kratší cesta - stačí upravit soubor composer.json a doplnit závislosti. Ten můj vypadá takto:

{
	"name": "nette/sandbox",
	"description": "The sandbox is a pre-packaged Nette Framework project, basic configured structure for your application.",
	"homepage": "https://nette.org",
	"type": "project",
	"license": ["BSD-3-Clause", "GPL-2.0", "GPL-3.0"],
	"authors": [
		{
			"name": "David Grudl",
			"homepage": "https://davidgrudl.com"
		},
		{
			"name": "Nette Community",
			"homepage": "https://nette.org/contributors"
		}
	],
	"require": {
		"php": ">=5.6.0",
		"nette/application": "~2.3.12",
		"nette/bootstrap": "~2.3.4",
		"nette/caching": "~2.3.5",
		"nette/component-model": "~2.2.4",
		"nette/database": "~2.3.8",
		"nette/deprecated": "~2.3.2",
		"nette/di": "~2.3.10",
		"nette/finder": "~2.3.2",
		"nette/forms": "~2.3.8",
		"nette/http": "~2.3.6",
		"nette/mail": "~2.3.5",
		"nette/neon": "~2.3.4",
		"nette/php-generator": "~2.3.5",
		"nette/reflection": "~2.3.2",
		"nette/robot-loader": "~2.3.1",
		"nette/safe-stream": "~2.3.2",
		"nette/security": "~2.3.1",
		"nette/tokenizer": "~2.2.1",
		"nette/utils": "~2.3.8",
		"latte/latte": "~2.3.11",
		"tracy/tracy": "~2.3.10",
		"dg/adminer-custom": "^1.6",
		"o5/grido": "^2.1",
		"dibi/dibi": "^3.0",
		"kdyby/translation": "^2.3",
		"kdyby/bootstrap-form-renderer": "@dev",
		"ipub/visual-paginator": "^1.0"
	}
}

Při každé změně pak stačí aktualizovat příkazem

composer update

Nette se stále vyvíjí a nemám jistotu, že si teď stahuješ tu verzi sandboxu, na které pracuji při psaní tohoto seriálu. Takže si můžeš stáhnout připravený základ aplikace, jak by měl vypadat po dnešní lekci.

Úklid, konfigurace, strom složek

Náš redakční systém bude malá aplikace. Ale v rámci cvičení a učení jsem ji pojal tak, že ji dělím na moduly. Zatím 2 - Admin a Front. Ať je v tom pořádek, oddělíme si to jak v systému souborů, tak i pomocí Namespace. Ve složce app proto vytvoř složky AdminModule a FrontModule. Uvnitř nich ještě složky components a presentres. No a do každé složky presenters ještě složku templates. Bude to vypadat asi takto:

Strom složek v Nette

Složku app\presenters přesuň do složky app\FrontModule\presenters. Potom musíš upravit namespace u všech přesunutých php souborů takto:

namespace App\FrontModule\Presenters;

Přidáš tam prostě ten FrontModule. Je to 5 souborů, tak to půjde rychle.

Připojení k databázi

Máš doufám databázi s tabulkami, které jsme tvořili v předchozím díle. Pokud ne, vytvoř databázi a vyrob tabulky. Nebo OK - stáhni si dump databáze a importuj do své databáze. Naše aplikace pracuje s databází MySQL a bude potřeba někam zapsat přihlašovací údaje. Ty budou v souboru app\config\config.local.neon.

Otevři soubor a zadej správné údaje. Jsou různé možnosti jak co v konfiguračním souboru zapsat. Odkazuji na stránky Nette, kde si můžeš počíst detailně. Moje konfigurace má tento tvar:

parameters:
	database:
		host: localhost
		username: root
		password:
		database: redakcni-system
		profiler: FALSE
		debugger: TRUE
		lazy: TRUE

Předpokládám, že jestli se už chystáš psát vlastní redakční systém, umíš si konfiguraci upravit pro své prostředí.

Ještě upravíme hlavní konfigurační soubor app\config\config.neon. Doplníme služby o databázi a nastavíme rozšíření. Uprav sekci services a doplň sekce extensions a translation takto:

services:
	- App\Model\UserManager
	- App\Forms\FormFactory
	- App\Forms\SignInFormFactory
	- App\Forms\SignUpFormFactory
	router: App\RouterFactory::createRouter
	database: Dibi\Connection(%database%, "mysqli")
	database.panel: Dibi\Bridges\Tracy\Panel
	cacheStorage:
		class: Nette\Caching\Storages\DevNullStorage
	nette.latteFactory:
		setup:
			- setTempDirectory(null)
	tracy.bar:
		setup:
			- @database.panel::register(@database)

extensions:
	translation: Kdyby\Translation\DI\TranslationExtension
	visualPaginator: IPub\VisualPaginator\DI\VisualPaginatorExtension

translation:
	default: cs
	whitelist: [cs, en]
	fallback: [cs_CZ, cs]
	debugger: on

Nastavení rout

Ještě nastavíme routy tak, aby jsme mohli pracovat zvlášť v administraci a zvlášť na frontendu. Proto jsme si vyráběli ty složky AdminModule a FrontModule. Otevři soubor app\router\RouterFactory.php a uprav jej takto:

<?php

namespace App;

use Nette;
use Nette\Application\Routers\RouteList;
use Nette\Application\Routers\Route;

class RouterFactory 
{

	/**
	 * @return Nette\Application\IRouter
	 */
	public static function createRouter() {
		$router = new RouteList;
		$router[] = $adminRouter = new RouteList('Admin');
		$adminRouter[] = new Route('[<locale=cs cs|en>/]admin/<presenter>/<action>[/<id>]', 'Pages:default');

		$router[] = $frontRouter = new RouteList('Front');
		$frontRouter[] = new Route('[<locale=cs cs|en>/]<presenter>/<action>[/<id>]', 'Homepage:default');

		$frontRouter[] = new Route('[<locale=cs cs|en>/]index.php', 'Homepage:default', Route::ONE_WAY);
		return $router;
	}

}

Nepatří to sice přímo k instalaci Nette Frameworku, ale v administraci budeme časem upravovat textová pole a zpříjemníme si práci nějakým webovým editorem. Já se rozhodl pro Ckeditor. Taky nahrávání obrázků si zjednodušíme pomocí Kcfinderu. Pokud chceš, můžeš si je stáhnout z originálních stránek projektů. Já už si oba trochu upravil a pokud chceš, stáhni si upravenou verzi Ckeditoru a Kcfinderu. Po stažení je rozbal do složky www.

Můžeš si stáhnout připravený základ aplikace, jak by měl vypadat po dnešní lekci. Neděs se, že při spuštění se zobrazí chyba. To je proto, že Sandbox je psán pro Nette Database a já pracuji s Dibi. V příští lekci to napravíme.

Příště si zkusíme vložit nějakého uživatele, který bude mít práva administrátora.

Redakční systém RS::RS Předchozí kapitola

Návrh databáze

Redakční systém RS::RS Celý seriál

Vývoj redakčního systému v PHP

Redakční systém RS::RS Následující kapitola

Autentifikace uživatele

Komentáře (0)

Přidej svůj komentář

O mně

Jmenuji se Rudolf Svátek. Jsem lektor výpočetní techniky a PHP programátor. Stavím firemní stránky a eshopy. Aby se mi to dělalo pohodlně, vytvořil jsem redakční systém RS::RS, který ti tu nabízím k použití.

Rychlý kontakt na mně

  • Rudolf Svátek
  • Telefon:
    +420 777 828 353
  • Email:
  • Adresa:
    Josefa Hory 1097/5
    736 01 Havířov
    ČR



Tyto stránky používají Cookies. Používáním stránek s tím souhlasíte Další informace