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 – 8. diel - Jednoduchý redakčný systém v Nette - Dokončenie administrácia

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
Jindřich Máca
Tvůrce
Avatar
Odpovedá na pepapavlik
Jindřich Máca:21.7.2015 20:29

Ahoj,

to je způsobené tím, že v článku http://www.itnetwork.cz/…administrace je vypsané pouze rozšíření třídy ArticlePresenter tj. pouze přidané metody. Není tam tedy vidět kýžený začátek souboru, kde je samozřejmě třeba doplnit nově použité třídy. V přiloženém archivu už jsou ale pak uvedeny. :)

Uznávám, že je to matoucí a neúplné, takže to ve zmíněném článku napravím. ;)

Avatar
Supercaptain
Člen
Avatar
Supercaptain:22.8.2015 14:56

ahoj, setkal se nekdo u kontaktniho formulare s touto chybou?

Method Nette\Utils\Html::__toS­tring() must not throw an exception

Nevite cim by to mohlo byt? Kdyz necham jenom addText s emailem tak to funguje pokud pridam addTextArea zacne to blbnout.

Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovedá na Supercaptain
Jindřich Máca:6.9.2015 15:46

Ahoj, to bude pravděpodobně tím, že u addTextArea() potom nemůžeš volat setType('email'), protože TextArea žádný takový typ nemá. :-D Zkoušel jsi to i bez toho? :-)

Avatar
Supercaptain
Člen
Avatar
Odpovedá na Jindřich Máca
Supercaptain:6.9.2015 18:25

Kod jsem mel "zkopirovany z tutorialu z této stranky".

Opravdu jsem u addTextArea nepřidaval type email :-). Co jsem tim myslel ukazu na nasledujícím kodu....

Měl jsem nasledujici kod

$form = new Form;
                $form->addText('email', 'Vaše emailová adresa')->setType('email')->setRequired();
                $form->addText('y', 'Zadejte aktuální rok')->setRequired()
                        ->addRule(Form::EQUAL, 'Chybně vyplněný antispam.', date("Y"));

A prave kdyz jsem tohle pridal zacalo to blbnout.

$form->addTextArea('message', 'Zpráva')->setRequired()
                   ->addRule(Form::MIN_LENGTH, 'Zpráva musí být minimálně %d znaků dlouhá.', 10);

Nevim proc tomu tak je. Stahnul jsem si ten presenter ze zdrojaku a jede to v pořadku.

Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovedá na Supercaptain
Jindřich Máca:6.9.2015 19:40

Aha, tak to jsem špatně pochopil. :-D Každopádně nevím, proč Ti to takhle blbne. Začal bych asi promazáním cache a případně potom zkusil od té výjimky dohledat její příčinu. Ovšem občas jsou ty výjimky nic neříkající... :-/

Editované
Avatar
Milan Gallas
Tvůrce
Avatar
Milan Gallas:5.10.2015 18:14

Ten řádek v routeFactory mě fakt potrápil

$router[] = new Route('[<action>/][<url>]', array(

Měl sem tam napsané

$router[] = new Route('[<action/>][<url>]', array(

a chybu jsem hledal asi hodinu :D :D
Ale spoň vím na co si dát příště pozor.

Avatar
danhosek
Člen
Avatar
danhosek:26.3.2016 17:44

ahoj prosím o pomoc s RouteFactory.php přidal jsem do projektu Reference (-např.) ale nevím, jak tuto podstránku přidat do route tak, aby mi fungovala i administrace referencí i článků.
Děkuji za pomoc.

Avatar
danhosek
Člen
Avatar
danhosek:26.3.2016 22:42

upravil jsem RouterFactory takto dle specifikací:

<?php

/*  _____ _______         _                      _
*ANOTACE
*/

namespace App;

use Nette\Application\Routers\Route;
use Nette\Application\Routers\RouteList;
/**
 * Routovací továrnička.
 * Řídí routování v celé aplikaci.
 * @package App
 */
class RouterFactory
{
        /**
         * Vytváří router pro aplikaci.
         * @return RouteList výsledný router pro aplikaci
         */
        public static function createRouter()
        {
                $router = new RouteList();
                $router[] = new Route('kontakt/', 'Core:Contact:default');
                $router[] = new Route('<action>/', array(
                        'presenter' => 'Core:Administration',
                        'action' => array(
                                // řetězec v URL => akce presenteru
                                Route::FILTER_TABLE => array(
                                        'administrace' => 'default',
                                        'prihlaseni' => 'login',
                                        'odhlasit' => 'logout',
                                        'registrace' => 'register'
                                ),
                                Route::FILTER_STRICT => true
                        )
                ));
        $router[] = new Route('reference/[<action>/][<url>]', array(
            'presenter' => 'Core:Reference',
            'action' => array(
                Route::VALUE => 'default',
                Route::FILTER_TABLE => array(
                    // řetězec v URL => akce presenteru
                    'reference' => 'list',
                    'editor' => 'editor',
                    'odstranit' => 'remove'
                ),
                Route::FILTER_STRICT => true
            ),
            'url' => null,
        ));
        $router[] = new Route('[<action>/][<url>]', array(
            'presenter' => 'Core:Article',
            'action' => array(
                Route::VALUE => 'default',
                Route::FILTER_TABLE => array(
                    // řetězec v URL => akce presenteru
                    'seznam-clanku' => 'list',
                    'editor' => 'editor',
                    'odstranit' => 'remove'
                ),
                Route::FILTER_STRICT => true
            ),
            'url' => null,
        ));
        $router[] = new Route('[<url>]', 'Core:Article:default');
        return $router;
    }
}

nyní je funkční přesměrování na výpis referencí i článků, ale reference se mi nevypisují
Ani administrace nefunguje. po pokusu uložit referenci s form action: /reference/editor/
jsem přesměrován na /chyba
Je vůbec možné upravit tento projekt tak, že jsem upravit article na reference a aby mi fungovala administrace k obojímu? Já si myslím, že je už problém pouze v RouterFactory, ale 100% si jistý nejsem. a lépe upravit router factory sám nedokážu.
Děkuji.

Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovedá na danhosek
Jindřich Máca:28.3.2016 22:30

Ahoj,
vezmu tvůj komentář asi od konce. Co se týče psaní routování v Nette, není to úplně snadné. Doporučoval bych poctivě pročíst dokumentaci - https://doc.nette.org/cs/2.3/routing a potom se třeba ještě podívat na nějaké příklady např. http://zlml.cz/…te-prakticky. Obecný postup je pak následující:

  • Sepsat si všechny URL adresy, které má / může můj web obsahovat.
  • Seřadit adresy od nejkonkrétnějších po nejobecnější a to kvůli pořadí jejich zpracování.
  • Zkontrolovat, jestli se někde částečně nepřekrývají a pokud ano, je potřeba to napravit. Zkrátka každá URL adresa na webu musí být unikátní.
  • Vymyslet jak svůj seznam URL adres nejoptimálněji zapsat do routeru. K tomu je potřeba dobrá znalost všech jeho vlastností viz. odkazy výše uvedené.

Další Tvoje otázka byla, jestli je routování v projektu možné upravit Tvým specifickým způsobem. Určitě ano, ale budeš k tomu muset využít postup uvedený výše.

Abych Ti pomohl, dal jsem si tu práci a analyzoval jsem kód, který jsi uvedl, plus jsem v něm udělal pár úprav. ;) Vyložená chyba tam není, otázka zní, jestli to dělá to, co by jsi od toho očekával. Onu analýzu můžeš najít zde - http://www.itnetwork.cz/dev-lighter/703. Zkrátka zadaná adresa prochází seznam, přesně tak, jak jsem to očísloval a pokud se najde shoda, je zavolána akce presenteru s danými parametry.

Pokud je vše, jak má být, ještě bych ověřil pomocí laděnky (Tracy), že dané URL se opravdu mapují správně. Laděnka Ti při jejich zadání vypíše všechny podrobnosti. :)

Pokud vše souhlasí, chyba bude opravdu s největší pravděpodobností někde jinde, obzvlášť např. u toho odesílání formuláře bych ji nehledal v routeru. Bohužel, bez dalších zdrojových kódů projektu Ti nedokážu říct více.

Na závěr Ti popřeji hodně štěstí a pevné nervy! :D

Avatar
danhosek
Člen
Avatar
Odpovedá na Jindřich Máca
danhosek:29.3.2016 22:17

sepsal jsem si ty odkazy na webu a zjistil jsem problem u editoru článků a editoru referencí. Podle Url nelze zjistit, zda jde o referenci nebo článek:
/editor/ //Editor článku

/editor/ //uložení nového článku
editor/clanek1 //odkaz na editaci čánku + uložení změn článku
/odstranit/clanek1 //smazání článku
u reference ty odkazy vypadají stejně.
Mydlim, že tento problem by vyřešily změny v routovacím poly:
$router[] = new Route('[<acti­on>/][<url>]', array(
'presenter' => 'Core:Reference',
'action' => array(
Route::VALUE => 'default',
Route::FILTER_TABLE => array(
// řetězec v URL => akce presenteru
'reference' => 'list',
'editor_ref' => 'editor',
'odstranit_ref' => 'remove'
),
Route::FILTER_STRICT => true
),
'url' => null,
));
Stačilo by to? nebo by to nerozeznalo, zda jde o referenci nebo článek?

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 60.