Aktualizovaný sandbox pro Nette + Dibi

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
stonewheel
Člen | 5
+
0
-

Ahoj lidi,

Opravdu by to chtělo vytvořit jednoduchý ale pravidelně aktualizovaný sandbox pro Nette + Dibi, začátečník ztratí spoustu času s rozcházení základních věcí a přehrabováním se ve starých nefunkčních kódech a odkazech.
Nenašla by se dobrá duše, která by to dokázala?

Díky.

Editoval stonewheel (12. 4. 2015 0:17)

webdata
Člen | 153
+
-4
-

A co třeba, že by jste se toho zhostil vy? Jinak za mne, nic takového nepotřebuji. Mám svůj sandbox kde se o aktualizaci starám sám. :-)

stonewheel
Člen | 5
+
0
-

Věřte, že po mně to nechcete :-)

David Matějka
Moderator | 6445
+
+5
-

Rozchozeni nette + dibi by melo byt snadny:

composer create-project nette/web-project
cd web-project

composer require dg/dibi

do app/config/config.neon akorat pridas https://github.com/….sample.neon a je to ;)

stonewheel
Člen | 5
+
0
-

Wow. Díky.
Mohl bych ještě poprosit o příklad kódu pro HomepagePresenter, jak se tam dostat k dibi a nějaký select?

Editoval stonewheel (12. 4. 2015 2:12)

webdata
Člen | 153
+
-3
-

stonewheel napsal(a):

Wow. Díky.
Mohl bych ještě poprosit o příklad kódu pro HomepagePresenter, jak se tam dostat k dibi a nějaký select?

Toto forum a celý NETTE web má jednu hodně vyhytanou funkci a to hledání kam stačí zadat DIBI a hned na první stránce vypadne odpověď na váš dotaz.

PS: Tak si tak někdy říkám zda to není ztráta času pro ty co píšou dokumentaci a „tutoriály“, protože podle některých dotazů to nikdo stejně nečte a bohatě by stačilo primitivní fórum BEZ VYHLEDÁVÁNÍ kde by se dotazy řešili pořád dokola :-)

Editoval webdata (12. 4. 2015 2:42)

stonewheel
Člen | 5
+
0
-

Mám svůj sandbox kde se o aktualizaci starám sám. :-)

Toto forum a celý NETTE web má jednu hodně vychytanou funkci a to hledání kam stačí zadat DIBI a hned na první stránce vypadne odpověď na váš dotaz.

Když tě to zjevně obtěžuje, proč si nenajdeš jiné vlákno? Nebo se nechceš jít starat sám o svůj kód?

Vlastně se ptám proto, že se to podle této stránky nepodařilo rozjet. Je tam podle mě pár zastaralých a zavádějících informací. Je těžké to posoudit co k čemu patří a co v nové verzi zbytečné. Tak místo toho, abych otravoval s 10 chybovými hláškami chci jednoduchý kód pro quick start.

Šaman
Člen | 2666
+
+4
-

To odkazované vlákno je již zastaralé a odkazovat na něj nováčka dneska je trochu prasárna. Konkrétně ty metody startup s přímým saháním do contextu jsou už total out. A to, že ArticlePresenter dědí od Objectu, takže to vlastně vůbec není presenter.

@stonewheel: Pokud máš Dibi nakonfigurované v neonu, tak by v presenteru mělo stačit

<?php
class ArticlePresenter extends Nette\Application\UI\Presenter
{
    /** @var DibiConnection @inject */ # anotace inject (a vyplněná třída/rozhraní předávané závislosti)
    public $db; # musí být public
?>

Druhá varianta je předat závislost v konstruktoru, stejně, jako je v té ukázce předáváno do modelu. (A při předávání do modelu je jediná plně podporovaná možnost ten konstrukor, anotace inject ti nebude fungovat mimo presentery).

Editoval Šaman (12. 4. 2015 13:45)

webdata
Člen | 153
+
-4
-

stonewheel napsal(a):

Mám svůj sandbox kde se o aktualizaci starám sám. :-)

Toto forum a celý NETTE web má jednu hodně vychytanou funkci a to hledání kam stačí zadat DIBI a hned na první stránce vypadne odpověď na váš dotaz.

Když tě to zjevně obtěžuje, proč si nenajdeš jiné vlákno? Nebo se nechceš jít starat sám o svůj kód?

Vlastně se ptám proto, že se to podle této stránky nepodařilo rozjet. Je tam podle mě pár zastaralých a zavádějících informací. Je těžké to posoudit co k čemu patří a co v nové verzi zbytečné. Tak místo toho, abych otravoval s 10 chybovými hláškami chci jednoduchý kód pro quick start.

A co je složitého na pochopení po postu Davida Matěky se podívat do dokumentace kde je popsané to co napsal šaman?

Všimni si, že zde dávám odkazy které se dají najít a vlastně na tvůj dotaz dávají odpověď. Co se týče starání se o můj kód, tak bez obav, to mám očekované přes composer , ale o tom zase v nějakém dalším tvém postu :-)

Šaman
Člen | 2666
+
+2
-

@stonewheel: Abych neradil naslepo a abych se taky podíval na ten nový nette\web-project, tak jsem vytvořil nejjednodušší ukázku na githubu.
K jejímu rozběhnutí potřebuješ jen překopírovat config.sample.neon na config.local.neon a vytvořit si databázi a naplnit ji nějakými testovacími daty (data pro tento příklad jsou přiložená přímo v /app).
Anebo začít čistý projekt tak, jak psal @DavidMatějka výše a pak následovat jednotlivé commity.

stonewheel
Člen | 5
+
0
-

Šaman napsal(a):

@stonewheel: Abych neradil naslepo a abych se taky podíval na ten nový nette\web-project, tak jsem vytvořil nejjednodušší ukázku na githubu.
K jejímu rozběhnutí potřebuješ jen překopírovat config.sample.neon na config.local.neon a vytvořit si databázi a naplnit ji nějakými testovacími daty (data pro tento příklad jsou přiložená přímo v /app).
Anebo začít čistý projekt tak, jak psal @DavidMatějka výše a pak následovat jednotlivé commity.

Díky oběma za pomoc. Po ‚anotace inject‘ mi to už docvaklo :-)

Editoval stonewheel (12. 4. 2015 15:50)

chemix
Nette Core | 1310
+
+2
-

@stonewheel Ja jen dodam ze injectovat db do presenteru chces pouze v pripade pidi aplikace, kde nema cenu udrzovat komplikovany kod (chapej jako ze se akorat na stankach vypisujou novinky a tim to hasne) V opacnem pripade nechces injectovat dibi do presenteru, ale do „manageru“ (s nazvoslovim mam problem, posledni dobou pozuzivam manager) ktery si pak injectnes do presenteru a zavolas jen

presenter.php

...

/**
 * @inject
 * @var \Model\ArticleManager
 */

public function renderDefault()
{
	$this->templates->articles = $this->articleManager->findForHomepage();
}
...

manager.php

namespace Model;
...

/**
 * ArticleManager
 */
class ArticleManager extends Nette\Object
{
	/**
	 * @var \DibiConnection
	 */
	public $db;

...

	public function __construct(\DibiConnection $db)
	{
		$this->db = $db;
	}

	public function findForHomepage()
	{
		return $this->db->select(...);
	}

...

a config.neon

services:
    - ArticleManager

pokud je to pro tebe novinka, prosim mrkni se na pripravovany dokument do dokumentace, pomuze jakakoli reakce. Neni to sice na Dibi, ale princip je stejny. https://docs.google.com/…pDMqNiM/edit?…