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 – 4. diel - Dokončenie kalkulačky v Nette

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
Odpovedá na Milan Gallas
Martin Konečný (pavelco1998):29.9.2015 20:53

Zřejmě máš starší verzi PHP, která nepodporuje zápis pole pomocí hranatých závorek.
Zkus použít

$form->onSuccess[] = array($this, 'calculatorFormSucceeded';

// nebo
$form->onSuccess[] = $this->calculatorFormSucceeded;
Odpovedať
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
johnsilver2010:9.11.2015 12:39

V presenteru při vytváření komponenty to hodí chybu - Call to a member function getOperations() on null . Co dělám špatně ?

Avatar
Vít Cigánek:11.11.2015 19:00

Hm, mi to hlasí tohle:

Nette\InvalidStateException

Service of type App\Forms\SignFormFactory used in @var annotation at App\Presenters\SignPresenter::$factory not found. Did you register it in configuration file?       search►

Source file

Call stack

...\vendor\nette\di\src\DI\Extensions\InjectExtension.php:41    source  Nette\DI\Extensions\InjectExtension::   checkType (arguments)

...\vendor\nette\di\src\DI\Extensions\InjectExtension.php:29    source  Nette\DI\Extensions\InjectExtension->   updateDefinition (arguments)

...\vendor\nette\di\src\DI\Compiler.php:207     source  Nette\DI\Extensions\InjectExtension->   beforeCompile ()

...\vendor\nette\di\src\DI\Compiler.php:141     source  Nette\DI\Compiler->     generateCode (arguments)

...\vendor\nette\bootstrap\src\Bootstrap\Configurator.php:268   source  Nette\DI\Compiler->     compile ()

inner-code      Nette\Configurator->    generateContainer (arguments)

...\vendor\nette\di\src\DI\ContainerLoader.php:113      source  call_user_func_array (arguments)

...\vendor\nette\di\src\DI\ContainerLoader.php:78       source  Nette\DI\ContainerLoader->      generate (arguments)

...\vendor\nette\di\src\DI\ContainerLoader.php:43       source  Nette\DI\ContainerLoader->      loadFile (arguments)

...\vendor\nette\bootstrap\src\Bootstrap\Configurator.php:222   source  Nette\DI\ContainerLoader->      load (arguments)

...\app\bootstrap.php:19        source  Nette\Configurator->    createContainer ()

 9:
10:    $configurator->setTempDirectory(__DIR__ . '/../temp');
11:
12:    $configurator->createRobotLoader()
13:        ->addDirectory(__DIR__)
14:        ->register();
15:
16:    $configurator->addConfig(__DIR__ . '/config/config.neon');
17:    $configurator->addConfig(__DIR__ . '/config/config.local.neon');
18:
19:    $container = $configurator->createContainer();
20:
21:    return $container;
22:
...\www\index.php:3     source  require (arguments)

Exception

Environment

HTTP request

HTTP response

Report generated at 2015/11/11 18:55:21
http://localhost/…lator-nette/
PHP 5.6.3
Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3

Avatar
Odpovedá na Vít Cigánek
Martin Konečný (pavelco1998):11.11.2015 19:13

Jak vypadají tvé configy? Přesněji sekce services. Nette ti hlásí, že se nenašla žádná třída se jménem App\Forms\Sig­nFormFactory

Odpovedať
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Vít Cigánek:11.11.2015 20:06

Po přenatavení services funguje....

services:
        - App\Model\CalculatorManager
          s timhle mi to řve chybu tak jsem to dal pryč ///- App\Model\UserManager
        - App\Forms\SignFormFactory
        router: App\RouterFactory::createRouter
Avatar
Vít Cigánek:16.11.2015 17:33

hm, tak jsem měl dneska školení v nete a nikde tady není psané že se v souboru app/config/con­gif.neon přidavají service pomocí tabulatoru.

services:
        - App\Model\CalculatorManager
        router: App\RouterFactory::createRouter
<style>
        html { font: normal 18px/1.3 Georgia, "New York CE", utopia, serif; color: #666; -webkit-text-stroke: 1px rgba(0,0,0,0); overflow-y: scroll; }
        body { background: #3484d2; color: #333; margin: 2em auto; padding: 0 .5em; max-width: 600px; min-width: 320px; }
        a { color: #006aeb; padding: 3px 1px; }
        a:hover, a:active, a:focus { background-color: #006aeb; text-decoration: none; color: white; }
        #banner { border-radius: 12px 12px 0 0; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAB5CAMAAADPursXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGBQTFRFD1CRDkqFDTlmDkF1D06NDT1tDTNZDk2KEFWaDTZgDkiCDTtpDT5wDkZ/DTBVEFacEFOWD1KUDTRcDTFWDkV9DkR7DkN4DkByDTVeDC9TDThjDTxrDkeADkuIDTRbDC9SbsUaggAAAEdJREFUeNqkwYURgAAQA7DH3d3335LSKyxAYpf9vWCpnYbf01qcOdFVXc14w4BznNTjkQfsscAdU3b4wIh9fDVYc4zV8xZgAAYaCMI6vPgLAAAAAElFTkSuQmCC); }
        h1 { font: inherit; color: white; font-size: 50px; line-height: 121px; margin: 0; padding-left: 4%; background: url(http://files.nette.org/images/[email protected]) no-repeat 95%; background-size: 130px auto; text-shadow: 1px 1px 0 rgba(0, 0, 0, .9); }
        @media (max-width: 600px) {
                h1 { background: none; font-size: 40px; }
        }
        #content { background: white; border: 1px solid #eff4f7; border-radius: 0 0 12px 12px; padding: 10px 4%; overflow: hidden; }
        h2 { font: inherit; padding: 1.2em 0; margin: 0; }
        img { border: none; float: right; margin: 0 0 1em 3em; }
</style>

Nějaka podobna blbost platí u stylu... musí tam být mezera html {/mezera/ font: normal 18px/1.3 Georgia,

když ne tak to hodí chybu.

Avatar
Mazwor
Člen
Avatar
Mazwor:14.3.2016 15:26

Při práci s fomulářem jsem musel v presenteru (CalculatorPre­senter) kód upravit tak, že buď při každém odkazu na třídu form nestačilo napsat Form, ale bylo zapotřebí Nette\Applica­tion\UI\Form, případně jsem musel třídu na začátku načíst pomocí

use Nette\Application\UI\Form;

Stejně tomu je i při volání modelu z presenteru a podobně. Např. začátek presenteru pak vypadal následovně:

<?php

namespace App\Presenters;

use Nette;
use App\Model\CalculatorManager;
use Nette\Application\UI\Form;


class CalculatorPresenter ...

Chtěl bych se tedy zeptat, zda to tak dělám správně a autor to pouze neuvádí, protože to nejspíš považuje za samozřejmost, nebo zda mi něco uniká a celá kalkulačka by měla fungovat i bez této drobné úpravy?

Každopádně super seriál, který mě konečně donutil začít s Nette a nepsat zdlouhavě celé projekty čistě v PHP. Díky za něj! :)

Odpovedať
Pořádek je pro blbce, inteligent ovládá chaos. :D
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovedá na Mazwor
Jindřich Máca:15.3.2016 12:04

Ahoj,

jsem moc rád, že se Ti seriál líbí. :-) Co se týče Tvého dotazu, tak máš naprostou pravdu a tyto "hlavičky" tam samozřejmě patří. Nějak jsem to opravdu považoval za samozřejmost, ale už jsem pro jistotu poslal ke schválení doplněnou verzi článku. Pokud by Tě zajímalo, jak jsem je konkrétně napsal já, tak samozřejmě v přiloženém archívu u článku jsou v příslušných zdrojový kódech uvedeny. ;-)

Avatar
Ondřej Němec
Tvůrce
Avatar
Ondřej Němec:9.7.2017 21:13

Zajímavé.
K otázce, zda kontrolovat data v presenteru nebo v manageru - nebylo by nejlepší kontrolovat to v obojím, nezávisle na sobě v duchu "programátor nemusí být paranoidní, ale hodně to pomáhá"?

Odpovedať
Život by byl mnohem jednodušší, kdybychom k němu měli zdrojový kód.
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 67.