Instalace: Replikátor formulářových kontejnerů bez composeru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Nich
Člen | 49
+
0
-

Potřeboval bych použít tento addon: https://componette.org/search/?… ale bohužel se mi ho nedaří v nette zprovoznit.

Postupoval jsem takto:

  1. Stáhl jsem si aktuální class soubor z gitHubu: https://github.com/…xtension.php
  2. Umístil jsem ho do: /libs/Kdyby/Replicator/DI/ReplicatorExtension.php
  3. Na konec souboru libs/autoload.php jsem umístil tento řádek:

require __DIR__ . '/Kdyby/Replicator/DI/ReplicatorExtension.php';

  1. Zkusil jsem vytvořit jednoduchý formulář, ale dostávám tuto chybu:
Nette\MemberAccessException
Call to undefined method Nette\Application\UI\Form::addDynamic().
  1. Zkusil jsem tedy do bootstrap.php dát tohle:

Kdyby\Replicator\Container::register(); ale znovu chyba:

Fatal Error
Class 'Kdyby\Replicator\Container' not found

Můžete mi prosím někdo poradit co dělám špatně? Projekt už mám rozjetej a nechce se mi tam ten composer zapojovat.

(Hello world) formulář vypadá takto:

use Nette\Application\UI\Form;
use Nette\Forms\Container;

    protected function createComponentInstallForm() {
        $form = new Form();

        $form->addText('name', 'Název:');

        // jméno, továrnička, výchozí počet
        $users = $form->addDynamic('users', function (Container $user) {
            // ...
            $user->addSubmit('remove', 'Smazat')
                ->addRemoveOnClick(); // metodu vytváří replicator
        }, 1);

        $users->addSubmit('add', 'Přidat dalšího člověka')
            ->addCreateOnClick(); // metodu vytváří replicator


        $form->addSubmit('submit', 'Spustit');
        $form->onSuccess[] = $this->installFormSubmitted;

        return $form;
    }

Editoval Nich (19. 4. 2013 18:31)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Co takto?

Kdyby\Replicator\DI\ReplicatorExtension::register();

Tedy použít tu requirnutou třídu, ne nějakou jinou :).

Filip Procházka
Moderator | 4668
+
0
-

Ale ten extension přece vůbec nepotřebuješ, nejdůležitější je třída Replicator\Container

  • stáhneš zip
  • rozbalíš do libovolné složky, kde na to uvidí robot loader, tedy třeba do libs/Replicator
  • v bootstrapu zavoláš
Kdyby\Replicator\Container::register();
  • profit
Nich
Člen | 49
+
0
-

Jo, už sem na to přišel… Nějak mě zmátla ta poznámka: wrong class usage. Z toho sem si nějak zafixoval, že tuhle classu nepotřebuju.
Všem moc dík za pomoc, už to funguje.