bootstrap.php verze 2.4 vs Bootstrap.php verze 3.0

před 11 dny

Allconius
Člen | 113
+
0
-

Ahoj,
v bootstrap.php ve verzi 2.4 jsem měl přidánu registraci pro rozšíření DatePicker:

<?php
require __DIR__ . '/../vendor/autoload.php';

RadekDostal\NetteComponents\DateTimePicker\DatePicker::register();

$configurator = new Nette\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTimeZone('Europe/Prague');
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
    ->addDirectory(__DIR__)
    ->register();
$configurator->addConfig(__DIR__ . '/config/config.neon');
$configurator->addConfig(__DIR__ . '/config/config.local.neon');

$container = $configurator->createContainer();

return $container;
?>

ale ve verzi 3.0 už je to řešené třídou:

<?php
declare(strict_types=1);

namespace App;

use Nette\Configurator;


class Bootstrap
{
    public static function boot(): Configurator
    {

        $configurator = new Configurator;
        $configurator->enableTracy(__DIR__ . '/../log');
        $configurator->setTimeZone('Europe/Prague');
        $configurator->setTempDirectory(__DIR__ . '/../temp');
        $configurator->createRobotLoader()
            ->addDirectory(__DIR__)
            ->register();
        $configurator->addConfig(__DIR__ . '/config/common.neon');
        $configurator->addConfig(__DIR__ . '/config/local.neon');

        return $configurator;
    }
}
?>

kam mám to „RadekDostal\NetteComponents\DateTimePicker\DatePicker::register();“ dát? Bez toho mi to píše:
„Call to undefined method Nette\Application\UI\Form::addDatePicker()“

před 10 dny

Allconius
Člen | 113
+
0
-

Pavel Kravčík napsal(a):

Do configu: https://github.com/…teTimePicker#…

Ahoj, to nepomůže, toto mám v common.neon:

<?php
parameters:


application:
    errorPresenter: Error
    mapping:
        *: App\*Module\Presenters\*Presenter


session:
    expiration: 14 days
    autoStart: true


services:
    router: App\Router\RouterFactory::createRouter
    - App\Model\DbManager

extensions:
  tbDatePicker: RadekDostal\NetteComponents\DateTimePicker\TbDatePicker\DI\TbDatePickerExtension

tbDatePicker:
  format: j. n. Y
?>

je potřeba někam dát to „RadekDostal\NetteComponents\DateTimePicker\DatePicker::register();“ aby to fungovalo

před 10 dny

Pavel Kravčík
Člen | 984
+
0
-

Co znamená nepomůže? Cache si vyčistil po přidání extension? Composer update na tu novou verzi DP se povedl?

https://github.com/…xtension.php#L43

před 10 dny

Allconius
Člen | 113
+
0
-

tady jsem to řešil u 2.4: https://forum.nette.org/…tetimepicker

před 10 dny

Allconius
Člen | 113
+
0
-

Pavel Kravčík napsal(a):

Co znamená nepomůže? Cache si vyčistil po přidání extension? Composer update na tu novou verzi DP se povedl?

https://github.com/…xtension.php#L43

jj cache jsem vyčistil a composer to nainstaloval OK „composer require radekdostal/nette-datetimepicker“:

composer require radekdostal/nette-datetimepicker

Warning: Module ‚openssl‘ already loaded in Unknown on line 0
Using version ^3.0 for radekdostal/nette-datetimepicker
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files

Editoval Allconius (9. 8. 9:16)

před 10 dny

Allconius
Člen | 113
+
0
-

Taky úplně nechápu proč se musí ještě spouštět DatePicker::register() když už je to v configu .....
Ale tady v tom příkladu to tam taky pouští:
https://github.com/…tePicker.php

Editoval Allconius (9. 8. 9:24)

před 10 dny

CZechBoY
Člen | 3377
+
0
-

Já bych to hodilo normálně do tý metody boot.

před 10 dny

Allconius
Člen | 113
+
0
-

CZechBoY napsal(a):

Já bych to hodilo normálně do tý metody boot.

Ahoj, to jsem zkoušel, ale to mě ale vyhodí chybu 500:

<?php

declare(strict_types=1);

namespace App;

use Nette\Configurator;


class Bootstrap
{

    public static function boot(): Configurator
    {


        RadekDostal\NetteComponents\DateTimePicker\DatePicker::register();
        $configurator = new Configurator;

        $configurator->enableTracy(__DIR__ . '/../log');

        $configurator->setTimeZone('Europe/Prague');
        $configurator->setTempDirectory(__DIR__ . '/../temp');

        $configurator->createRobotLoader()
            ->addDirectory(__DIR__)
            ->register();

        $configurator->addConfig(__DIR__ . '/config/common.neon');
        $configurator->addConfig(__DIR__ . '/config/local.neon');

        return $configurator;
    }
}
?>

hodí:
Tato stránka nefunguje Web momentálně tento požadavek nemůže zpracovat.
HTTP ERROR 500

Editoval Allconius (9. 8. 10:17)

před 10 dny

Allconius
Člen | 113
+
0
-

našel jsem že se to nějak řešilo i tady: https://forum.nette.org/…ker-do-formu

před 10 dny

Allconius
Člen | 113
+
0
-

Ahoj, tak nakonec pomohlo dát to do /www/index.php:

<?php

declare(strict_types=1);

require __DIR__ . '/../vendor/autoload.php';
RadekDostal\NetteComponents\DateTimePicker\DatePicker::register();

App\Bootstrap::boot()
    ->createContainer()
    ->getByType(Nette\Application\Application::class)
    ->run();
?>

haluz teda :-D

před 10 dny

Martk
Člen | 515
+
0
-

Když už tam dáváš absolutní adresu, tak to musí začínat zpětným lomítkem: \RadekDostal\NetteComponents\DateTimePicker\DatePicker::register();, protože teď ti to hledalo třídu App\RadekDostal\NetteComponents\DateTimePicker\DatePicker::register();

Nefunguje ti to v configu, protože správný název extension třídy je: RadekDostal\NetteComponents\DateTimePicker\DateTimePicker\DI\DateTimePickerExtension

Editoval Martk (9. 8. 13:19)

před 8 dny

Allconius
Člen | 113
+
0
-

Martk napsal(a):

Když už tam dáváš absolutní adresu, tak to musí začínat zpětným lomítkem: \RadekDostal\NetteComponents\DateTimePicker\DatePicker::register();, protože teď ti to hledalo třídu App\RadekDostal\NetteComponents\DateTimePicker\DatePicker::register();

Nefunguje ti to v configu, protože správný název extension třídy je: RadekDostal\NetteComponents\DateTimePicker\DateTimePicker\DI\DateTimePickerExtension

Ahoj, toto mi taky nefunguje:

<?php
extensions:
  tbDatePicker: RadekDostal\NetteComponents\DateTimePicker\DateTimePicker\DI\DateTimePickerExtension

?>

nějak to co je v tom configu ignoruje a pouští to jen přes ten register() nemá to být v tom configu ještě nějak jinak ?

před 8 dny

Allconius
Člen | 113
+
0
-

Martk napsal(a):

Když už tam dáváš absolutní adresu, tak to musí začínat zpětným lomítkem: \RadekDostal\NetteComponents\DateTimePicker\DatePicker::register();, protože teď ti to hledalo třídu App\RadekDostal\NetteComponents\DateTimePicker\DatePicker::register();

změnil jsem alespoň ten register a dal ho do Bootstrap.php s lomítkem, to je lepší než mít to v index.php, díky

před 8 dny

radas
Člen | 213
+
+1
-

Ahoj,
metodu register() použiješ jen v případě, kdy nemáš MVC aplikaci. Jinak stačí konfigurace v neon souboru.

před 8 dny

Allconius
Člen | 113
+
0
-

radas napsal(a):

Ahoj,
metodu register() použiješ jen v případě, kdy nemáš MVC aplikaci. Jinak stačí konfigurace v neon souboru.

Ahoj, já právě mám MVC aplikaci, nový projekt s nette 3, ale pokud to mám jen v common.neon tak to píše:
„Call to undefined method Nette\Application\UI\Form::addDatePicker()“
aby to fungovalo tak tam musím dát ten register() do Bootstrap.php

před 7 dny

radas
Člen | 213
+
0
-

To je zvláštní. Taky ho používám s Nette 3 MVC aplikacemi a bez problémů konfigurace jen v config.neon. Je pravda, že používám původní bootstrap.php, nikoliv třídu Bootstrap. Zkusím se na to podívat.

před 7 dny

Allconius
Člen | 113
+
0
-

radas napsal(a):

To je zvláštní. Taky ho používám s Nette 3 MVC aplikacemi a bez problémů konfigurace jen v config.neon. Je pravda, že používám původní bootstrap.php, nikoliv třídu Bootstrap. Zkusím se na to podívat.

Udělal jsem to takto:

  1. composer create-project nette/web-project nette-blog
  2. cd nette-blog
  3. composer require radekdostal/nette-datetimepicker
  4. common.neon:
<?php
parameters:

application:
    errorPresenter: Error
    mapping:
        *: App\*Module\Presenters\*Presenter

session:
    expiration: 14 days

services:
    router: App\Router\RouterFactory::createRouter

extensions:
  tbDatePicker: RadekDostal\NetteComponents\DateTimePicker\TbDatePicker\DI\TbDatePickerExtension

tbDatePicker:
  format: j. n. Y
?>

5. HomepagePresenter.php:

<?php
declare(strict_types=1);

namespace App\Presenters;

use Nette;
use Nette\Application\UI\Form;


final class HomepagePresenter extends Nette\Application\UI\Presenter
{

    protected function createComponentNovyForm()
    {
        $form = new Form;
        // group Personal data
        //$form->setRenderer(new Bootstrap());

        $form->addProtection();
        $form->addGroup();
        $form->addText('jmeno', 'Jméno:')
            ->setRequired('Zadejte Vaše jméno');
        $form->addDatePicker('datumod', 'Od:', 10)
            ->setDefaultValue('01.01.2019')
            ->setReadOnly(FALSE)
            ->setRequired(TRUE)
            ->addRule(Form::RANGE, NULL, array(new DateTime('2013-01-01'), new DateTime('2019-12-31')))
            ->setAttribute('size', 10);
    }



}
?>

6. default.latte:

<?php
{block content}
{control novyForm}
?>

7. delete cache
8. /nette-blog/www/:
"Nette\MemberAccessException

Call to undefined method Nette\Application\UI\Form::addDatePicker()"

před 7 dny

Ondřej Kubíček
Člen | 408
+
+1
-

v tom examplu na githubu – https://github.com/…teTimePicker se ten input jmenuje addTbDatePicker, ne addDatePicker

před 7 dny

Allconius
Člen | 113
+
0
-

Ondřej Kubíček napsal(a):

v tom examplu na githubu – https://github.com/…teTimePicker se ten input jmenuje addTbDatePicker, ne addDatePicker

Ahoj, je tam více typů, ten addDatePicker je tady: https://github.com/…tePicker.php

před 6 dny

nightfish
Člen | 147
+
+2
-

@Allconius Registrace extension v config.neon musí odpovídat tomu, co pak používáš.

Pro addTbDatePicker() zaregistruješ:

extensions:
  tbDatePicker: RadekDostal\NetteComponents\DateTimePicker\TbDatePicker\DI\TbDatePickerExtension

Pro addDatePicker() zaregistruješ:

extensions:
  datePicker: RadekDostal\NetteComponents\DateTimePicker\DatePicker\DI\DatePickerExtension

před 6 hodinami

Allconius
Člen | 113
+
0
-

nightfish napsal(a):

@Allconius Registrace extension v config.neon musí odpovídat tomu, co pak používáš.

Pro addTbDatePicker() zaregistruješ:

extensions:
  tbDatePicker: RadekDostal\NetteComponents\DateTimePicker\TbDatePicker\DI\TbDatePickerExtension

Pro addDatePicker() zaregistruješ:

extensions:
  datePicker: RadekDostal\NetteComponents\DateTimePicker\DatePicker\DI\DatePickerExtension

super, funguje, to je přesně to co jsem potřeboval vědět, díky moc ! :-)