NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 6 - Jednoduchý redakční systém v Nette - Výpis článku

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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.

 
Odpovědět
29.6.2017 14:04
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.
Editováno 17.11.2017 10:41
 
Odpovědět
17.11.2017 10:40
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá 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. ;)

 
Odpovědět
17.11.2017 17:30
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.

Editováno 15.2.2018 10:18
 
Odpovědět
15.2.2018 10:16
Avatar
dez1nd
Člen
Avatar
Odpovídá 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;
Editováno 15.2.2018 10:23
 
Odpovědět
15.2.2018 10:21
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá 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.

 
Odpovědět
15.2.2018 14:04
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:6.8.2018 13:24

Aktualizováno pro Nette 2.4.

Odpovědět
6.8.2018 13:24
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."

 
Odpovědět
14.3.2020 17:20
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.

Odpovědět
14.3.2020 18:25
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:14.3.2020 18:26

Jeste sem muzes poslat config

Odpovědět
14.3.2020 18:26
Řeš pouze to, co dokážeš ovlivnit.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 105.