Doplnky a instalacia novych doplnkov do NETTE

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

Caute, mozno trivialna otazka, ale nemohol by niekto dat dokopy do manualu nejaky rozumny clanok ako sa pridavaju doplnky? Skusam si prihodit CheckedListBox a mam v tom dost hokej, aj ked mi v tom forsty22 dost intenzivne pomaha :-) Problem je proste v tom ze mi to NETTE nepozna, NEtbeans mi proste ten prvok neponuka…atd…

Vdaka

Tomas P
Člen | 27
+
0
-

Ahoj,
sice niesom ziadny expert, ale skoro kazdy doplnok sa „instaluje“ (tj. registruje v Nette) inak :-(. Niektore v BasePresenter, niektore v bootstrap.php, niektore staci v config.neon… je to trosku zmatok, ale zvykli mat popis na stranke addonu.

Netbeans nie je Nette, takze ak to netbeans nepozna, tak len napr nema refreshnuty strom suborov, nevie na akej triede robis → alebo ctrl-click.

V Nette, ak mas RobotLoader nakonfigurovany na adresar /libs, mas tam nahraty addon (tak ako je zverejneny), tak by sa mal nacitat pri prvom pouziti jeho classy automaticky.

Ak pouzivas https://componette.org/search/?… tak navod tam je napisany… CheckedListBox som nenasiel.

Inak odporucam pozriet si composer – https://doc.nette.org/…ces/composer

cujan
Člen | 410
+
0
-

Hej pouzivam CheckboxList

nahral som ho do Libs/nette/forms/control/

do bootstrap.php som vlozill
FormContainer::extensionMethod(‚FormContainer::addCheckboxList‘, array(‚CheckboxList‘, ‚addCheckboxList‘));

a pri pouziti vo forme dostal som chybovu hlasku

Call to undefined method Nette\Application\UI\Form::addCheckboxlist().

LeonardoCA
Člen | 296
+
0
-

To je tím, že komponenta není přepsaná pro nové nette. Zkus se podívat do komentářů pod doplňkem, tam je odkaz na verzi, která by mohla fungovat.

cujan
Člen | 410
+
0
-

Caves stiahol som si z komentov verziu,

do bootstrap.php som vlozil

Nette\Forms\Controls\CheckboxList::register();

a vypisuje pri pouziti chybu

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

moj mineralPreenter.php

<?

<?php
use Nette\Application\UI\Form;

/**
 * Description of MineralPresenter
 *
 * @author Stredna lesnicka
 */
class MineralPresenter extends BasePresenter {

    /**
     * (non-phpDoc)
     *
     * @see Nette\Application\Presenter#startup()
     *
     */

    private $mineralRepository;
    private $skupinaRepository;
    private $ciselnikkrystalografickasustavaRepository;
    private $ciselnikvrypRepository;
    private $ciselnikstiepatelnostRepository;
    private $tasks;


    protected function startup() {
	parent::startup();
	$this->mineralRepository = $this->context->mineralRepository;
	$this->skupinaRepository = $this->context->skupinaRepository;
	$this->ciselnikkrystalografickasustavaRepository = $this->context->ciselnikkrystalografickasustavaRepository;
	$this->ciselnikvrypRepository = $this->context->ciselnikvrypRepository;
	$this->ciselnikstiepatelnostRepository = $this->context->ciselnikstiepatelnostRepository;

    }

    public function actionDefault() {

    }

    public function renderDefault() {
	$this->template->mineraly = $this->mineralRepository->findAllMineral();
    }

    //vytvori formular
    protected function createComponentVlozMineraltForm()
    {
	$skupina = $this->skupinaRepository->findAllSkupina()->fetchPairs('id','nazov');
	$krystalografickaSustava = $this->ciselnikkrystalografickasustavaRepository->findAllKrystalografickaSustava()->fetchPairs('id','vlastnost');
	$vryp = $this->ciselnikvrypRepository = $this->ciselnikvrypRepository->findAllVryp()->fetchPairs('id','vlastnost');
	$stiepatelnost = $this->ciselnikstiepatelnostRepository = $this->ciselnikstiepatelnostRepository->findAllStiepatelnost()->fetchPairs('id','vlastnost');

	$form = new Form();
	$form -> addText('nazov','Názov minerálu',40,100)->addRule(Form::FILLED,'Je nutné zadať názov');
	$form -> addSelect('skupina','Skupina',$skupina);
	$form -> addText('chemickeZlozenie','Chemické zloženie',40,100);
	$form -> addSelect('krystalografickaSustava','Kryštalografická sústava',$krystalografickaSustava);
	$form -> addSelect('vryp','Vryp',$vryp);
	$form -> addText('tvrdostOd','tvrdosť od',40,100);
	$form -> addText('tvrdostDo','tvrdosť do',40,100);
	$form -> addSelect('stiepatelnost','Štiepateľnosť',$stiepatelnost);
	$form -> addText('hustotaOd','hustota od',40,100);
	$form -> addText('hustotaDo','hustota do',40,100);
	$form -> addCheckboxList('farba');

	$form->addSubmit('create', 'Vložiť minerál');
	$form->onSuccess[] = $this->vlozMineralFormSubmitted;
    return $form;

    }
    //spracuje vystup po odoslani formulara (ulozi vlastnosti)
    public function vlozMineralFormSubmitted(Form $form)
    {
	$this->mineralRepository->createTask($form->values->nazov,$form->values->skupina,$form->values->chemickeZlozenie,$form->values->krystalografickaSustava,$form->values->vryp,$form->values->tvrdostOd,$form->values->tvrdostDo,$form->values->stiepatelnost,$form->values->hustotaOd,$form->values->hustotaDo);
	$this->flashMessage('Zatial sa nedaju vkladat mineraly.', 'success');
    $this->redirect('this');
    }
}

?>
Tomas P
Člen | 27
+
0
-

V nejakom kode co tu mam som nasiel tento addon a vyzera ze vsetko funguje… ked som porovnal kod addonu s tym co je na githube, vyzera byt rovnaky…

cujan napsal(a):
nahral som ho do Libs/nette/forms/control/

vacsinou v adresari /libs je viacej „kniznic“ a „addonov“… takze nette ma vlastny adresar (aby sa dalo update-ovat samostatne… a vedla neho su dalsie addony, stiahnute z netu.

/libs/nette/…
/libs/CheckboxList.php
/libs/…

$form → addCheckboxList(‚farba‘);

ja to mam v kode nejak takto (s viac parametrami):
$form->addCheckboxList(‚farba‘, ‚Vyber farbu‘, array(1 ⇒ ‚cervena‘, ‚zelena‘, ‚modra‘));

cujan
Člen | 410
+
0
-

no fakt neviem kde robm chybu, uz som to nahral aj do /libs/ a stale ta iste chyba

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

vvoody
Člen | 910
+
0
-

cujan napsal(a):

no fakt neviem kde robm chybu, uz som to nahral aj do /libs/ a stale ta iste chyba

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

Ukaz cely bootstrap.php

cujan
Člen | 410
+
0
-

<?

<?php

/**
 * My Application bootstrap file.
 */
use Nette\Application\Routers\Route;


// Load Nette Framework or autoloader generated by Composer
require LIBS_DIR . '/autoload.php';


// Configure application
$configurator = new Nette\Config\Configurator;

// Enable Nette Debugger for error visualisation & logging
//$configurator->setDebugMode($configurator::AUTO);
$configurator->enableDebugger(__DIR__ . '/../log');

// Enable RobotLoader - this will load all classes automatically
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
	->addDirectory(APP_DIR)
	->addDirectory(LIBS_DIR)
	->register();

// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config/config.neon');
$container = $configurator->createContainer();

// Setup router
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');


// Configure and run the application!
$container->application->run();

Nette\Forms\Controls\CheckboxList::register();

?>
vvoody
Člen | 910
+
0
-

Tu registráciu voláš príliš neskoro, posun to pred spustenie aplikácie.

Editoval vvoody (24. 10. 2012 17:52)

cujan
Člen | 410
+
0
-

jasne, uz to funguje vdaka, idem si dokladne nastudovat bootstrap.php

Ondrash
Člen | 11
+
0
-

Ahoj, hlasi mi to podobnou chybku, ale neuspel jsem pri oprave posunutim v bootstrapu.
Call to undefined method Nette\Application\UI\Form::addGpsPicker().
jde o doplnek gpspickr
src jsem nahral do libs/gpspicker
v bootstrapu pridal

$configurator->onCompile[] = function ($configurator, $compiler) {
	$compiler->addExtension('gpspicker', new VojtechDobes\NetteForms\GpsPickerExtension);
 };

v presenteru nahore

use VojtechDobes\NetteForms\GpsPicker as Gps;
//a pouzil takto
$form->addGroup();
        $form->addGpsPicker('coords', 'Coordinates:');
        $form->addSubmit('ok','ok');

jo v @layotu jsem jeste odkazal na script

Poradte prosim co s tim.

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

Ondrash Zkus znovuuložit config.neon nebo prostě promazat cache… extenze je sice zaregistrovaná, ale Nette to nepozná, pokud se nezmění konfigurační soubory, a tudíž nepřegeneruje SystemContainer.

Ondrash
Člen | 11
+
0
-

vojtech.dobes: V tom to nebylo. Uz nevim v cem to muze byt. Je jedno kam nahraju tu ext?
Da se nejak otestovat jestli ji nette vubec vidi? Asi prave tim $form->addGpsPicker, ze?
Chtel bych nejak po kouscich najit kde ta chyba je. . .

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

Pokud by ji neviděl, zařval by ti u té registrace v bootstrapu. Ale vlastně ne, nezařval, protože onCompile se provede pouze v případě invalidace SystemContaineru. Mrkni se do SystemContainer (v cache složce), jestli je v něm text VojtechDobes\NetteForms\GpsPickerMacros::install.

Ondrash
Člen | 11
+
0
-

Ve slozce robotloader jsem nasel neco takovehohle.

3:"VojtechDobes\NetteForms\GpsPicker";}s:42:"vojtechdobes\netteforms\gpspickerextension";a:3:{s:4:"file";s:58:"C:\xampp\htdocs\calc\libs\gpspicker\GpsPickerExtension.php";s:4:"time";i:1350226290;s:4:"orig";s:42:"VojtechDobes\NetteForms\GpsPickerExtension";}s:39:"

To znamena ze tu ext naloadoval ne? Tak v cem je chyba?
Asi to zkusim vypnout a zapnout. :-)

Ondrash
Člen | 11
+
0
-

Nevim, co delam spatne ted jsem to zkusil zapojit do sandboxu a stejna chybka.

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

V cachi Configuratoru po té řadce ani zmínka?

Ondrash
Člen | 11
+
0
-

Ne neni to tam.
Jen v robotloaderu.
Co to znamena?

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

Ukaž celý bootstrap.php.

Ondrash
Člen | 11
+
0
-

muj bootstrap

<?php

/**
 * My Application bootstrap file.
 */
use Nette\Application\Routers\Route;


// Load Nette Framework or autoloader generated by Composer
require LIBS_DIR . '/autoload.php';


// Configure application
$configurator = new Nette\Config\Configurator;

// Enable Nette Debugger for error visualisation & logging
//$configurator->setDebugMode($configurator::AUTO);
$configurator->enableDebugger(__DIR__ . '/../log');

// Enable RobotLoader - this will load all classes automatically
$configurator->setTempDirectory(__DIR__ . '/../temp');
$configurator->createRobotLoader()
	->addDirectory(APP_DIR)
	->addDirectory(LIBS_DIR)
	->register();


// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/config/config.neon');
$container = $configurator->createContainer();


// Setup router
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

$configurator->onCompile[] = function ($configurator, $compiler) {
	$compiler->addExtension('gpspicker', new VojtechDobes\NetteForms\GpsPickerExtension);
};




// Configure and run the application!
$container->application->run();
Marek Šneberger
Člen | 130
+
0
-

Nemělo by se to registrovat před

$container = $configurator->createContainer();

?
Ty to registruješ pozdě :)

Editoval Marek Šneberger (8. 11. 2012 13:50)

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

That's what I thought… :)

Ondrash
Člen | 11
+
0
-

Uf.. . .
Uz jsem to zkousel, jen jsem pri tom kdyz jsem to zmenil
NEVYMAZAL CACHE.
diky za radu pro zelenace. Hihihi jsem trouba jestli se nepletu. :-)

Ted uz se mi to zobrazi.