Problém se zprovozněním DatePicker
- Lopata
- Člen | 139
Kamkoliv. Jediný požadavek je, aby se ten kód vykonal
dříve, než na formuláři zavoláš metodu
addDatePicker
. Může to tedy být __construct
Tvého
poděděného Formu, můžeš si na to vyhradit speciální soubor či vytvořit
zvláštní objekt. Bude to ale fungovat i když to dáš do bootstrapu nebo na
konec souboru DatePicker.php (nevím, jak přesně se jmenuje).
- edmund
- Člen | 28
Díky, provedl jsem to a hned narazil na mnoho dalších problémů.
Laděnka mi hlásí, že nenašla spoustu tříd, na které se DatePicker
odkazuje, třeba
Nette\Tools na řádku $value = Nette\Tools::createDateTime($value); // clone
DateTime when given
nebo hned na řádku
class DatePicker extends Forms\FormControl
to hlásí, že nenašlo třídu FormControl.
Když jsem koukal, do adresáře s nette, tak tam skutečně tahle třída
není, ale je tam místo ní ve složce
Form\Controls\ třída BaseControl.
Je možné, že prostě verze DatePickeru neodpovídá aktuální verzi
Nette?
Mám stažen DatePicker odsud:http://nette.merxes.cz/date-picker/)
a aktuální Nette odsud:https://nette.org/cs/packages
Pokud ano, jaký jiný prvek pro práci s datem byste doporučili? Který nejlépe pracuje s aktuální verzí nette?
- edmund
- Člen | 28
ještě jsem si s tím trochu hrál,
nenalezené třídy opravil podle tohohle:
https://forum.nette.org/…n-ve-verzi-2
a opravil jsem řádek 142 z DatePicker.php
z $value = Nette\DateTime::createDateTime($value); // clone DateTime when
given
na $value = new DateTime($value);
A zatím se to tváří, jako že to chodí.
- xciza
- Člen | 194
Nechci kvůli stejnému problému zakládat nové téma tak píši sem.
Chtěl bych rozchodit DatePicker podle
tohoto návodu,
ale zaseknu se na bodu 7. Když požadovaný kód vložím do presenteru, kde
chci DatePicker použít tak mě to hodí chybu:
Class 'Nette\Forms\FormContainer' not found
Je mě jasný, že tam ta třída není, když jsem jí nenašel, ale co by měla tedy obsahovat, abych ji mohl vytvořit?? prošel jsem temata kde se něco podobného řešilo, ale s tim že tam není tato třída problém nikdo neměl…
- mfajfr
- Člen | 26
Ahoj,
mám jeden problém se zpracováním formuláře obsahující DatePicker.
Nejsem si jistý, jak tahat data právě z toho DatePickeru.
Momentálně mám:
<?php
$values->sendDate->date
?>
Ovšem to mi hlásí, že property date není.
Pokud to před tím však dumpnu, tak to projde a datum tam je.
Zde je celá metoda:
<?php
public function updateBuyBillSubmit(BuyBillForm $form){
$values = $form->getValues();
$idBuyBill = (int)$this->getParameter('idBuyBill');
$buyBill = BuyBill::getById($idBuyBill, $this->_db);
$sendDate = $values->sendDate;
//dump($sendDate);
$date = new VersioDateTime($sendDate->date);
}
?>
- Glottis
- Člen | 129
$values->sendDate ti da to co potrebujes
a kdyby jsi chtel jiny format tak pres tohle
http://www.php.net/…e.format.php
treba
$values->sendDate->format(„Y-m-d“);
Editoval Glottis (26. 6. 2013 11:18)
- Petrik.a.dost
- Člen | 72
Dobrý den,
snažím se implementovat datepicker a po vložení:
use Nette\Forms\FormContainer;
FormContainer::extensionMethod(‚addDatePicker‘, function (FormContainer
$container, $name, $label = NULL) {
return $container[$name] = new JanTvrdik\Components\DatePicker($label);
});
Teda trošku jsem si to upravil a vložil přímo do containeru ve tvaru:
public function addDatePicker($name, $label = NULL){
$container = new Container;
return $container[$name] = new JanTvrdik\Components\DatePicker($label);
}
tak mi laděnka hlásí: Class ‚Nette\Forms\JanTvrdik\Components\DatePicker‘ not found
PHP 5.3.24 nette 2.1
Předem děkuji za odpověd Petr
- Petrik.a.dost
- Člen | 72
nene tak tím to není problím stále stejný i když napíší:
public function addDatePicker($name, $label = NULL){
$container = new Container;
return $container[$name] = new \JanTvrdik\Components\DatePicker($label);
}
neměl bych to náhodou registrovat v configu tu třidu??
- Jan Tvrdík
- Nette guru | 2595
Petrik.a.dost wrote: nene tak tím to není problím stále stejný
Podívej se znovu a pořádněji.
- Petrik.a.dost
- Člen | 72
toto mi hlásí laděnka:
Class ‚JanTvrdik\Components\DatePicker‘ not found search►
Source file
File: C:\Users\Petrik\Documents\My Web Sites\WebSite1\seyf\vendor\nette\nette\Nette\Forms\Container.php:402
392:* @param string alternate text for the image
393:* @return Nette\Forms\Controls\ImageButton
394:*/
395:public function addImage($name, $src = NULL, $alt = NULL)
396:{
397:return $this[$name] = new Controls\ImageButton($src, $alt);
398:}
399:
400:public function addDatePicker($name, $label = NULL){
401:$container = new Container;
402:return $container[$name] = new \JanTvrdik\Components\DatePicker($label);
403:}
a jelikož to mám přímo v containeru tak jsem zkoušel i toto:
public function addDatePicker($name, $label = NULL){
return $this[$name] = new \JanTvrdik\Components\DatePicker($label);
}
jestli to nepomuže a pořád to hlásí:
Class ‚JanTvrdik\Components\DatePicker‘ not found search
- Petrik.a.dost
- Člen | 72
tak jo už to jede problém byl opravdu v namespace… omlouvám se, že jsem otravoval a díky za pomoc
- Šaman
- Člen | 2659
Trochu mimo téma, ale funguje vam DP+ s novým Nette 2.1? Po aktualizaci se
mi formuláře s DP+ zřejmě zacyklí a neodešlou (nevyskočí ani žádná
laděnka, jen bílá stránka a ladicí konzole firefoxu hlásí příliš mnoho
rekurzí(?) ). Změna políček s DP+ na textové pole tuto chybu
odstraní.
Dříve to fungovalo, v přilinkování DP+ a v tvorbě formulářů jsem
nedělal změny. A Formulář se zobrazí, výběr data funguje, problém je
až po odeslání.
Nesetkal jste se s tím někdo?
- Jan Tvrdík
- Nette guru | 2595
@Šaman: Ale pochopitelně, že jsem se s tím setkal. Používej DatePicker z Nextras, tam je to opravené.
- Šaman
- Člen | 2659
Jan Tvrdík napsal(a):
@Šaman: Ale pochopitelně, že jsem se s tím setkal. Používej DatePicker z Nextras, tam je to opravené.
A je někde ukázka použití pro lamy? Oproti tomu, co je v doplňkách, nebo na Merxes je tam výrazně víc souborů a asi jsem něco vynechal, protože teď už mi to ani nevybírá (jako kdyby tam picker vůbec nebyl).
- czmacek@centrum.cz
- Člen | 14
Ahoj, mohu pls. poprosit o radu? DataPicker mne funguje dobre. Nicmene jsem zjistlil, že pokud ho zobrazim v Chrome, tak se vubec neprojevi pridani addRule() resp. setRequired(). Tj. pokud se na to podivam v jakemkoli jinem prohlizeci mam vygenerovany kod:
<input id="frm-departure" class="date hasDatepicker" type="date" data-nette-rules="{op:':filled',msg:'Vyplňte prosím Váš odjezd'}" required="required" name="departure" readonly="readonly" size="11">
Pokud se na to podivam pres Chrome:
<input class="date hasDatepicker" id="frm-arrival" maxlength="524288" name="arrival" size="11" tabindex="0">
Nesetkal jste se s tim prosim nekdo?
Diky. Adam
- czmacek@centrum.cz
- Člen | 14
Tak uz jsem na to prisel, nevim tedy proc se tak Chrome chova, nicmene problem jde vyresit tak ze do javascriptu ktery svazuje input s kalendarem do $.each pridate prvek ktery chcete aby Vam Chrome hodil do vystupu. Plati pri jakemkoli atributu ktery k prvku pridavate ale nemate jej uvedeny v $.each. Tedy v mem pripade to vypada takto:
$.each("class,disabled,id,maxlength,name,size,style,tabindex,value,data-nette-rules,type".split(","), function(i, attr) {
tmp.attr(attr, el.attr(attr));
});
czmacek@centrum.cz napsal(a):
Ahoj, mohu pls. poprosit o radu? DataPicker mne funguje dobre. Nicmene jsem zjistlil, že pokud ho zobrazim v Chrome, tak se vubec neprojevi pridani addRule() resp. setRequired(). Tj. pokud se na to podivam v jakemkoli jinem prohlizeci mam vygenerovany kod:
<input id="frm-departure" class="date hasDatepicker" type="date" data-nette-rules="{op:':filled',msg:'Vyplňte prosím Váš odjezd'}" required="required" name="departure" readonly="readonly" size="11">
Pokud se na to podivam pres Chrome:
<input class="date hasDatepicker" id="frm-arrival" maxlength="524288" name="arrival" size="11" tabindex="0">
Nesetkal jste se s tim prosim nekdo?
Diky. Adam