Doplnky a instalacia novych doplnkov do NETTE
- cujan
- Člen | 410
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
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
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
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
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
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
<?
<?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();
?>
- Ondrash
- Člen | 11
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
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
.
- Vojtěch Dobeš
- Gold Partner | 1316
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
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
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
Nemělo by se to registrovat před
$container = $configurator->createContainer();
?
Ty to registruješ pozdě :)
Editoval Marek Šneberger (8. 11. 2012 13:50)