Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 6. diel - Jednoduchý redakčný systém v Nette - Výpis článku

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Roman Červeňan:29.6.2017 14:04

Ahoj všichni, zkouším začít s Nette, některé, především "automatické" činnosti frameworku mi nejsou zcela jasné, jak fungují, jednou z nich je třeba i vytvoření SQL dotazů. A právě tady jsem také narazil a nevím, jak dál.
Standardně jsem vytvořil na lokále DB dle scriptu, tedy včetně autoincrement polí. Při pokusu o uložení nového článku přes admin sekci mi debugger nahlásí "Chybu Serveru" a já v debuggeru vidím, že aplikace vytvořila dotaz, který podle mne nemůže do DB projít: INSERT INTO article (article_id, title, url, description, content) VALUES ('', ?, 'url-dalsiho-clanku', ?, ?)
Pole jsem vyplnil následovně:
Titulek: Titulek dalšího článku
URL: url-dalsiho-clanku
Popisek: popisek dalšího článku
Obsah: Obsah dalšího článku.

Mám divný pocit, že si to jednak nějak neporadí s češtinou, jednak je zajímavá položka article_id, která má ve Values hodnotu '', což pro INT(11) NOT NULL AUTO_INCREMENT není přípustná hodnota, pokud se nepletu, lepší je položku úplně vynechat.
Celý insert je automaticky vytvořen tímto řádkem: $this->database->table(self::TAB­LE_NAME)->insert($article);

Poradíte, co nastavit? Je chyba v nastavení DB (Debugger mi ukazuje, že před insertem se ještě volá SET NAMES 'utf8mb4', má to na něco vliv - třeba na ty chybějící české řetězce?) ? Nebo mám chybu v nastavení Nette?

Ani nevím, co všechno potřebujete vědět, tak jen pro začátek: mám Nette 2.4, Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/5.6.30.

Avatar
Matyáš Herman:17.11.2017 10:40

Ahoj, postupoval jsem podle postupu, a hází mi to error. Když jsem stáhnul zdroják odsud, tak mi to stále hlásí stejnou chybu:

Nette\Database\Con­nectionExcepti­on #HY000

SQLSTATE[HY000] [2002] Connection refused

.../app/CoreMo­dule/model/Ar­ticleManager.php:58 source Nette\Database\Con­text-> table (arguments)

S tím, že řádka 58 je červená..

48:            return $this->database->table(self::TABLE_NAME)->order(self::COLUMN_ID . ' DESC');
49:        }
50:
51:        /**
52:         * Vrátí článek z databáze podle jeho URL.
53:         * @param string $url URl článku
54:         * @return bool|mixed|IRow první článek, který odpovídá URL nebo false při neúspěchu
55:         */
56:        public function getArticle($url)
57:        {
58:            return $this->database->table(self::TABLE_NAME)->where(self::COLUMN_URL, $url)->fetch();
59:        }
60:
61:        /**
62:         * Uloží článek do systému. Pokud není nastaveno ID, vloží nový, jinak provede editaci.
Editované
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovedá na Matyáš Herman
Jindřich Máca:17.11.2017 17:30

Ahoj, to bude nejspíš proto, že máš špatně nastavené přihlašovací údaje k databázi v configu. ;)

Avatar
Michal Dvořáček:15.2.2018 10:16

Zdravím,
chtěl bych se zeptat na BaseManager, konkrétně na Object.
Nějak jsem pochopil, že už je Nette\Object zastaralé a místo ní se udělalo Nette\SmartObject.
Co ale neumím určit, je jak se třeba konkrétně v tomto příkladu využije, respektive o co mám pak BaseManager rozšířit. Zkoušel jsem právě o SmartObject, ale nefunguje.

use Nette\SmartObject;
abstract class BaseManager extends SmartObject
{...}

Děkuji za každou radu jak tuto komplikaci vyřešit.

Editované
Avatar
dez1nd
Člen
Avatar
Odpovedá na Michal Dvořáček
dez1nd:15.2.2018 10:21

Dědit nic nemusíš, máš to v use

potom stačí jen

$objekt = new SmartObject;

kdyby jsi to neměl v use tak bys musel

$objekt = new Nette\SmartObject;
Editované
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovedá na Michal Dvořáček
Jindřich Máca:15.2.2018 14:04

Ahoj, problém je v tom, že SmartObject není třída, ale PHP trait, což už mluví za vše. Příklady jejího použití pak najdeš přímo v oficiální dokumentaci - https://doc.nette.org/…/smartobject.

Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:6.8.2018 13:24

Aktualizováno pro Nette 2.4.

Odpovedať
New kid back on the block with a R.I.P
Avatar
Fero Mikulic
Člen
Avatar
Fero Mikulic:14.3.2020 17:20

Ahoj. Udelal sem vsechno podle postupu a haze mi to chybu

"Nette\DI\Ser­viceCreationEx­ception

Service 'routing.router': Method App\Router\Rou­terFactory::cre­ateRouter() is not callable."

Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:14.3.2020 18:25

Nekoukal jsem na serial, ale myslim si že to muze byt zpusobeno ze vyuzivas novou verzi a serial je pro starsi ale nevim. Ja kdyz jsem postupoval pri tvorbe cmska pres nette jen podle dokumentace tak mi to vzdy slo. Takze mozna ta verze.

Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:14.3.2020 18:26

Jeste sem muzes poslat config

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 105.