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 4 - Dokončení kalkulačky v Nette

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
Odpovídá 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;
Odpovědět
29.9.2015 20:53
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Milan Gallas
Tvůrce
Avatar
 
Odpovědět
29.9.2015 21:05
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ě ?

 
Odpovědět
9.11.2015 12:39
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

 
Odpovědět
11.11.2015 19:00
Avatar
Odpovídá 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

Odpovědět
11.11.2015 19:13
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
 
Odpovědět
11.11.2015 20:06
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.

 
Odpovědět
16.11.2015 17:33
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! :)

Odpovědět
14.3.2016 15:26
Pořádek je pro blbce, inteligent ovládá chaos. :D
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá 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. ;-)

 
Odpovědět
15.3.2016 12:04
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á"?

Odpovědět
9.7.2017 21:13
Život by byl mnohem jednodušší, kdybychom k němu měli zdrojový kód.
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 67.