Jak na Contributte Forms-wizard
- OdpadlikCZ
- Člen | 11
Nejsem moc zběhlý v Nettem a tak asi někde dělám triviální chybu, která vznikla díky mé neznalosti Nette.
Chtěl jsem rozchodit Contributte Forms-wizard a hází mi error „Cannot declare class Wizard, because the name is already in use“
Postupoval jsem následovně:
1. pomocí „composer create-project nette/web-project
nette-test“ jsem si udělal prázný projekt a rozchil ho. Vše
fungovalo.
2. pak jsem šel podle návodu na https://contributte.org/…-wizard.html#…
2.1 pomocí „composer require contributte/forms-wizard“ jsem přidal Wizard do projektu
2.2 do config/common.neon jsem vložil
extensions:
- Contributte\FormWizard\DI\WizardExtension
2.3 v app/Components/ jse vytvořil nový soubor Wizard.php (prototože nevím jak by se správně měl jmenovat" s obsahem sekce „Component“ v dokumentaci
use Nette\Application\UI\Form;
class Wizard extends Contributte\FormWizard\Wizard {
........... https://contributte.org/packages/contributte/forms-wizard.html#component
}
2.4 do config/services.neon jsem vložil
services:
- Wizard
2.5 do app/Prezenters/HomepagePresenter.php jsem dle návodu vložil PHP kód
/** @var Wizard @inject */
public $wizard;
public function handleChangeStep(int $step): void
{
$this['wizard']->setStep($step);
$this->redirect('wizard'); // Optional, hides parameter from URL
}
protected function createComponentWizard(): Wizard
{
return $this->wizard;
}
Zde to hodilo chybu „Class
‚App\Presenters\Wizard‘ not found.“
Tak jsem v services upravil „Wizard“ na „App\Components\Wizard“
tak to začně házet error „Compile Error "Cannot declare class Wizard,
because the name is already in use
Source file \app\Components\Wizard.php“
2.6 do app/Prezenters/templates/Homepage/defaut.latte jsem vložil kód zdokumentace
<div n:wizard="wizard">
<ul n:if="!$wizard->isSuccess()">
<li n:foreach="$wizard->steps as $step" n:class="$wizard->isDisabled($step) ? disabled, $wizard->isActive($step) ? active">
<a n:tag-if="$wizard->useLink($step)" n:href="changeStep! $step">{$step} - {$wizard->getStepData($step)['name']}</a>
</li>
</ul>
{step 1}
{control $form}
{/step}
{step 2}
{control $form}
{/step}
{step 3}
{control $form}
{/step}
{step success}
Registration was successful
{/step}
</div>
Když spustím nette-test/ tak mi to stále hází error
Compile Error
Cannot declare class Wizard, because the name is already in use
Source file \app\Components\Wizard.php
Poraďte mi, prosím, co dělám blbě, díky.
- Ozzrel
- Generous Backer | 54
Tady to zkus prozkoumat https://github.com/…gui-skeleton
jinak ti nejspíš chybí use Contributte\FormWizard\Wizard;
proto
to hledá tu třídu jinde
- OdpadlikCZ
- Člen | 11
Ozzrel napsal(a):
Tady to zkus prozkoumat https://github.com/…gui-skeleton jinak ti nejspíš chybí
use Contributte\FormWizard\Wizard;
proto to hledá tu třídu jinde
Díky za radu.
Do app/Prezenters/HomepagePresenter.php jsem vložil
use Contributte\FormWizard\Wizard;
a config/services.neon jsem upravil zpět na hodnotu z dokumentace
services:
- Wizard
A už to seje :)
Díky