( ! ) Deprecated: Twig_Environment::__construct(): Implicitly marking parameter $loader as nullable is deprecated, the explicit nullable type must be used instead in /var/www/html/generator/lib/Twig/Environment.php on line 91
Call Stack
#TimeMemoryFunctionLocation
10.0160430200{main}( ).../index.php:0
20.0316433280Twig_Autoloader::autoload( $class = 'Twig_Environment' ).../index.php:31

( ! ) Fatal error: Uncaught TypeError: array_key_exists(): Argument #2 ($array) must be of type array, null given in /var/www/html/generator/controllers/SampleController.php on line 38
( ! ) TypeError: array_key_exists(): Argument #2 ($array) must be of type array, null given in /var/www/html/generator/controllers/SampleController.php on line 38
Call Stack
#TimeMemoryFunctionLocation
10.0160430200{main}( ).../index.php:0
20.0947550200SampleController->route( $params = [0 => '/generator/'], $twig = class Twig_Environment { protected $charset = 'UTF-8'; protected $loader = class Twig_Loader_Filesystem { protected $paths = [...]; protected $cache = [...]; protected $errorCache = [...] }; protected $debug = TRUE; protected $autoReload = TRUE; protected $cache = class Twig_Cache_Null { }; protected $lexer = NULL; protected $parser = NULL; protected $compiler = NULL; protected $baseTemplateClass = 'Twig_Template'; protected $extensions = ['core' => class Twig_Extension_Core { ... }, 'escaper' => class Twig_Extension_Escaper { ... }, 'optimizer' => class Twig_Extension_Optimizer { ... }, 'debug' => class Twig_Extension_Debug { ... }]; protected $parsers = NULL; protected $visitors = NULL; protected $filters = NULL; protected $tests = NULL; protected $functions = NULL; protected $globals = NULL; protected $runtimeInitialized = FALSE; protected $extensionInitialized = FALSE; protected $loadedTemplates = NULL; protected $strictVariables = FALSE; protected $unaryOperators = NULL; protected $binaryOperators = NULL; protected $templateClassPrefix = '__TwigTemplate_'; protected $functionCallbacks = []; protected $filterCallbacks = []; protected $staging = class Twig_Extension_Staging { protected $functions = [...]; protected $filters = [...]; protected $visitors = [...]; protected $tokenParsers = [...]; protected $globals = [...]; protected $tests = [...] }; private $originalCache = FALSE; private $bcWriteCacheFile = FALSE; private $bcGetCacheFilename = FALSE; private $lastModifiedExtension = 0 }, $conf = ['main' => ['default_language' => 'cz', 'default_controller' => 'index', 'default_homepage' => '/generator', 'default_errorpage' => '/generator/error', 'default_address' => '/generator', 'default_upload_dir' => 'upload', 'session_name' => 'user', 'default_download_address' => '/generator/downloads'], 'database' => ['server' => 'localhost', 'user' => 'db', 'pass' => 'MysqlServer2021_Ubuntu', 'name' => 'newweb'], 'maintenance' => ['maintenanceon' => 'disabled', 'url' => 'maintenance'], 'debug' => ['debugon' => 'enabled', 'debugfile' => '/log/logerror.txt'], 'version' => ['type' => 'server']], $lang = ['login' => ['title' => 'Přihlášení', 'h2' => 'Přihlášení', 'username' => 'Jméno', 'password' => 'Heslo', 'loginbutton' => 'Přihlásit se', 'resetpassbutton' => 'Zapomenuté heslo'], 'registration' => ['title' => 'Registrace', 'h2' => 'Registrace', 'name' => 'Jméno', 'email' => 'Email', 'password' => 'Heslo', 'passwordrepeat' => 'Heslo znovu', 'terms' => 'Podmínky služby', 'submitbutton' => 'Registrovat'], 'resetpassword' => ['title' => 'Reset hesla', 'h2' => 'Reset hesla', 'email' => 'E-mail', 'submitbutton' => 'Obnovit heslo'], 'registrationtoken' => ['title' => 'Vložení tokenu', 'h2' => 'Vložení tokenu', 'token' => 'Token', 'submitbutton' => 'Zkontrolovat'], 'registrationsuccessful' => ['title' => 'Dokončení registrace', 'h2' => 'Dokončení registrace', 'text' => 'Vaše registrace proběhla úspěšně, pokračujte prosím na Login'], 'newpassword' => ['title' => 'Nové heslo', 'h2' => 'Nové heslo', 'password' => 'Heslo', 'passwordrepeat' => 'Heslo znovu', 'submitbutton' => 'Potvrdit'], 'default' => ['button_next' => 'Další krok', 'button_back' => 'Zpět', 'button_new_project' => 'Začít generovat nový projekt', 'button_update_existing' => 'Upravit vybraný projekt'], 'index' => ['title' => 'Generující systém', 'h1' => 'Generující systém', 'description' => 'Generující systém je soubor průvodců generováním z diplomové práce Generování informačních systémů z doménových modelů, kterou vypracoval Tomáš Kovařík v roce 2017/2018. Nyní se nacházíte na úvodní stránce generujícího systému, která je rozcestím pro čtyři části generování přístupné níže.', 'generate_new_h2' => 'Generování nového systému', 'generate_new_desc' => 'Generování nového systému je část generujícího systému, ve které je možné vytvořit nebo nahrát nový model pro vygenerování aplikace, případně použít již uložený model pro generování aplikace', 'generate_new_button' => 'Začít generovat nový systém', 'update_existing_h2' => 'Úprava vygenerovaného systému', 'update_existing_desc' => 'Úprava vygenerovaného systému je určena pro úpravu již uloženého systému v generujícím systému', 'update_existing_button' => 'Upravit vygenerovaný systém', 'inverse_generating_h2' => 'Inverzní generování', 'inverse_generating_desc' => 'Inverzní generování je způsob, pomocí kterého je možné z vygenerované aplikace získat model aplikace', 'inverse_generating_button' => 'Vytvořit model z aplikace', 'add_column_h2' => 'Přidání proměnné do aplikace', 'add_column_desc' => 'Přidání proměnné do aplikace přidává jeden sloupec do databáze a upravuje všechny modely, pohledy kontrolery a konfigurační soubory tak, aby odpovídaly nově přidanému sloupci v databázi. Nedochází zde k úpravě modelu ani ke ztrátě vložených dat', 'add_column_button' => 'Přidat proměnnou'], 'footer' => ['text' => 'Tomáš Kovařík, 2017/2018, Diplomová práce Generování informačních systémů z doménových modelů'], 'generator_configuration' => ['title' => 'Základní konfigurace generátoru', 'h2' => 'Základní konfigurace generátoru', 'h2_update' => 'Úprava základní konfigurace generátoru', 'db_connection' => 'Připojení k databázi', 'db_user' => 'Uživatel', 'db_pass' => 'Heslo', 'db_server' => 'Server', 'db_name' => 'Název databáze', 'db_tab_prefix' => 'Prefix pro tabulky', 'create_db' => 'Vytvořit databázi, pokud neexistuje', 'remove_tables' => 'Odstranit existující tabulky se stejnými jmény', 'tab_engine' => 'Engine', 'tab_charset' => 'Znaková sada', 'tab_collation' => 'Collation', 'directory_settings' => 'Nastavení adresáře', 'output_directory' => 'Název adresáře pro uložení projektu', 'project_description' => 'Popis projektu', 'proj_name' => 'Název projektu', 'proj_desc' => 'Popis projektu', 'admin_settings' => 'Nastavení přistupu do vygenerovaného projektu', 'admin_name' => 'E-mail budoucího adinistrátora systému', 'admin_pass' => 'Heslo k budoucímu účtu administrátora systému', 'diagram_to_update' => 'Diagramy k úpravě', 'update_db_diagram' => 'Upravit diagram databáze', 'update_class_diagram' => 'Upravit diagram tříd', 'diagram_source' => 'Zdroj diagramů pro generování', 'embed_class' => 'Diagramy tříd z prostředí draw.io', 'embed_db' => 'Diagramy databáze z prostředí draw.io', 'from_tables' => 'Generování z existujících databázových tabulek', 'db_diagram' => 'Nahrát diagram databáze ze souboru', 'class_uc_diagram' => 'Nahrát diagram tříd a případů použití ze souborů', 'class_diagram_file' => 'Vybrat soubor s diagramem tříd', 'uc_diagram_file' => 'Vybrat soubor s diagramem případů použití', 'db_diagram_file' => 'Vybrat soubor s diagramem databáze', 'new_db_diagram' => 'Vytvořit nový diagram databáze', 'db_diagrams' => 'Dříve vytvořené diagramy databáze', 'new_class_diagram' => 'Vytvořit nový diagram tříd', 'new_uc_diagram' => 'Vytvořit nový diagram případů použití', 'class_diagrams' => 'Dříve vytvořené diagramy tříd', 'uc_diagrams' => 'Dříve vytvořené diagramy případů použití', 'sql_file' => 'Nahrát SQL soubor', 'sql_input_file' => 'Výběr SQL souboru'], 'step1' => ['title' => 'Krok 1 - Výběr tabulek', 'h2' => 'Krok 1 - Výběr tabulek'], 'step2' => ['title' => 'Krok 2 - Konfigurace konfiguračních souborů', 'h2' => 'Krok 2 - Konfigurace konfiguračních souborů', 'table_name' => 'Název tabulky:', 'name_plac' => 'Název', 'plac_plac' => 'Placeholder', 'displayed_value' => 'Výběr zobrazované hodnoty', 'pk_value' => 'Výběr hodnoty primárního klíče'], 'step3' => ['title' => 'Krok 3 - Generování rout', 'h2' => 'Krok 3 - Generování rout', 'add_new_route' => 'Přidání nové routy', 'controller' => 'Název kontroleru', 'seo' => 'Seo název pro kontroler', 'new_line' => 'Přidat další', 'auto_add_routes' => 'Automaticky přidávané routy'], 'step4' => ['title' => 'Krok 4 - Generování navigace', 'h2' => 'Krok 4 - Generování navigace', 'proj_name' => 'Název projektu', 'proj_name_help' => 'Název projektu musí být vložen!', 'new_list' => 'Přidat nový seznam', 'insert' => 'Insert', 'preview' => 'Preview', 'update' => 'Update', 'view' => 'View', 'link_name' => 'Název odkazu', 'link_seo' => 'Seo url odkazu', 'new_link' => 'Přidat nový odkaz'], 'step5' => ['title' => 'Krok 5 - Výběr sloupců pro sitemap.xml', 'h2' => 'Krok 5 - Výběr sloupců pro sitemap.xml - ', 'h2_small' => 'Většinou pole id nebo name'], 'step6' => ['title' => 'Krok 6 - Nastavení generování souboru sitemap.xml', 'h2' => 'Krok 6 - Nastavení generování souboru sitemap.xml', 'description' => 'Stránka sloužící pro definování pro příští automatické generování sitemap.xml. Pro každou tabulku zvolenou v předchozím kroku a pro zaškrtnutá pole je pro každé pole vygenerován řádek s formulářovým polem pro pozici. Tato pozice udává pořadí pro parametry ve výsledné url. Dále je před každé pole a na konci za poslední pole vloženo prázdné formulářové pole, které slouží pro vyplnění oddělovače v url, typicky se jedná o /.', 'static_routes' => 'Nastavení pro statické routy', 'change_freq' => 'Frekvence změny', 'static_priority' => 'Statická priorita', 'priority' => 'Priorita', 'position' => 'Pozice', 'separator' => 'Oddělovač částí url adresy, nejčastěji / nebo -'], 'end' => ['title' => 'Konec generování', 'h2' => 'Konec generování', 'ftp_upload' => 'Nahrát vygenerovaný projekt na FTP server?', 'ftp_upload_server' => 'FTP server', 'ftp_upload_user' => 'Uživatel', 'ftp_upload_pass' => 'Heslo', 'ftp_upload_folder' => 'Složka na ftp serveru', 'ftp_upload_button' => 'Uložit na server', 'download_zip' => 'Stáhnout vygenerovaný projekt jako ZIP archiv'], 'update_existing' => ['title' => 'Úprava existujícího projektu', 'h2' => 'Úprava existujícího projektu'], 'inverse_generating' => ['title' => 'Inverzní generování', 'h1' => 'Inverzní generování', 'description' => 'Inverzní generování je určeno pro generování modelů z vygenerovaných souborů. K dispozici jsou dvě varianty, které jsou popsané níže.', 'from_config_h2' => 'Invezní generování z konfiguračních souborů', 'from_config_desc' => 'Inverzní generování z konfiguračních souborů využívá pro generování modelů konfigurační soubory, které vznikly při generování nového projektu. Na základě informací z těchto souborů jsou vytvořeny diagramy databáze a tříd.', 'from_config_button' => 'Generovat modely z konfiguračních souborů', 'from_app_h2' => 'Inverzní generování z aplikace', 'from_app_desc' => 'Inverzní generování z aplikace využívá zdrojové modely návrhového vzoru MVC pro generování diagramů databáze a tříd.', 'from_app_button' => 'Generovat modely z aplikace'], 'cfgtosql' => ['title' => 'Výběr adresáře', 'h2' => 'Výběr adresáře', 'directory' => 'Adresář', 'button' => 'Zvolit adresář'], 'cfgtosql1' => ['title' => 'Úprava SQL dotazů', 'h2' => 'Úprava SQL dotazů', 'button' => 'Pokračovat'], 'inverse_diagrams' => ['title' => 'Zobrazení vygenerovaných diagramů z konfiguračních souborů', 'h1' => 'Zobrazení vygenerovaných diagramů z konfiguračních souborů', 'description' => 'Po inverzním generování diagramů z konfiguračních souborů jsou k dispozici oba v generujícím systému akceptovatelné diagramy - diagram tříd a diagram databáze. Prohlédnout si je je možné níže pomocí modrých tlačítek.', 'db_h2' => 'Vygenerovaný diagram databáze', 'db_button' => 'Zobrazit', 'class_h2' => 'Vygenerovaný diagram tříd', 'class_button' => 'Zobrazit'], 'generate_from_app' => ['title' => 'Výběr adresáře', 'h2' => 'Výběr adresáře', 'button' => 'Pokačovat'], 'view_inversed' => ['title' => 'Zobrazení vygenerovaných diagramů z aplikace', 'h1' => 'Zobrazení vygenerovaných diagramů z aplikace', 'description' => 'Po generování z aplikace jsou k dispozici oba v generujícím systému akceptovatelné diagramy - diagram tříd a diagram databáze. Prohlédnout si je je možné pomocí integrovaného nástroje draw.io pomocí modrých tlačítek níže.', 'db_h2' => 'Vygenerovaný diagram databáze', 'db_button' => 'Zobrazit', 'class_h2' => 'Vygenerovaný diagram tříd', 'class_button' => 'Zobrazit'], 'add_column' => ['title' => 'Přidat proměnnou do aplikace', 'h2' => 'Přidat proměnnou do aplikace', 'project' => 'Projekt', 'proj_dir' => 'Adresář s projektem', 'db_name' => 'Název databáze', 'db_user' => 'Uživatel', 'db_pass' => 'Heslo', 'db_server' => 'Databázový server', 'base_data' => 'Základní údaje', 'table_name' => 'Tabulka / třída', 'field_name' => 'Název nové proměnné', 'datatype' => 'Datový typ', 'config' => 'Konfigurační soubor', 'placeholder' => 'Placeholder', 'text' => 'Text', 'maxlength' => 'Maximální délka', 'type' => 'Typ:', 'tyes' => 'Ano', 'fno' => 'Ne', 'button' => 'Vložit']], $routes = ['cz' => ['login' => 'prihlaseni'], 'en' => ['login' => 'login'], 'sk' => ['login' => 'prihlasenie'], 'default' => ['error' => 'error', 'maintenance' => 'maintenance', 'login' => 'login', 'step1' => 'step-1', 'step2' => 'step-2', 'step3' => 'step-3', 'step4' => 'step-4', 'step5' => 'step-5', 'step6' => 'step-6', 'end' => 'end', 'start_generating' => 'start-generating', 'start_inversegenerating' => 'start-inverse-generating', 'update_existing' => 'update-existing', 'inverse_diagrams_display' => 'inverse-diagrams-display', 'cfgtosql' => 'cfgtosql', 'cfgtosql1' => 'cfgtosql1', 'inversediagram' => 'inversediagram', 'generatefromapp' => 'generate-from-app', 'viewinversed' => 'view-inversed', 'add_column_to_db' => 'add-column-to-db']] ).../index.php:82