predvyplneni inputu ve formulari pomoci setDefaultValue
- parti
- Člen | 117
Ahoj neporadily by jste mi prosim jak do inputu nacist hodnotu z DB nastavit
ji a pripadne zabranit aby uzivatel mel moznost ji upravit, kliden nech ji
vidi.
$free_spots je pokud si dumpnu v presenteru
Nette\Database\Table\Selection #f121
context protected => Nette\Database\Context #bc46
connection private => Nette\Database\Connection #acb7
structure private => Nette\Database\Structure #d313
connection protected => Nette\Database\Connection #acb7 { ... }
cache protected => Nette\Caching\Cache #e1cd { ... }
structure protected => array (5) [ ... ]
isRebuilt protected => FALSE
conventions private => Nette\Database\Conventions\DiscoveredConventions #5062
cacheStorage private => Nette\Caching\Storages\FileStorage #8d0a
conventions protected => Nette\Database\Conventions\DiscoveredConventions #5062
cache protected => Nette\Caching\Cache #8348
sqlBuilder protected => Nette\Database\Table\SqlBuilder #6229
name protected => "parking_reservation" (19)
primary protected => "id" (2)
primarySequence protected => FALSE
rows protected => NULL
data protected => NULL
dataRefreshed protected => FALSE
globalRefCache protected => array (1)
"" => array (1)
referencingPrototype => array ()
refCache protected => array (1)
referencingPrototype => array ()
generalCacheKey protected => NULL
generalCacheTraceKey protected => NULL
specificCacheKey protected => NULL
aggregation protected => array ()
accessedColumns protected => NULL
previousAccessedColumns protected => NULL
observeCache protected => FALSE
keys protected => array ()
$form->addText('parking_place_id', 'Parking place')
->setDefaultValue($free_spots->parking_place->label);
pokud to takhle pustim tak mi to vyhodi hlasku
Undefined variable: free_spots
potreboval bych si z toho vytahnout jenom to id parkovaciho mista nebo to lable.
Dekuji moc za pomoc.
- Oli
- Člen | 1215
V tvém případě je $free_spots
kolekce řádků. Musíš nad
tím zavolat ještě fetch
.
Aby neměl možnost to změnit nepotřebuješ. Prostě to nezpracuješ při
ukládání. Jinak můžeš nastavit setDisable(true)
, nebo jak se
to zapisuje. Pak to nemá možnost změnit (přes formulář). V kodu můžeš
měnit všechno ;-)
- parti
- Člen | 117
Ono to nebude asi tak jednoduche u me pokud na tom zavolam fetch tak mi to vyhodi chybu
Call to undefined method Nette\Database\Table\ActiveRow::count()
odkazuje me to do sablony na tenhle radek
{if $free_spots->count('*')}
a dotaz mam takhle
$free_spots = $this->database->table('parking_reservation')
->where('parking_user_id IS NULL AND is_deleted = 0 AND to > ?', $this->today)
->order(isset($ordering['available_spots']) ? $ordering['available_spots'] : 'from DESC')->fetch();
- Oli
- Člen | 1215
No, pleteš to.
$free_spots = $this->database->table('parking_reservation')
->where('parking_user_id IS NULL AND is_deleted = 0 AND to > ?', $this->today)
->order(isset($ordering['available_spots']) ? $ordering['available_spots'] : 'from DESC');
Tohle ti vytáhne objekt Selection
. Což je kolekce řádků.
Prostě něco, co hodíš do feache a proiteruješ. Nebo nad tím můžeš
zavolat tu metodu count()
. Odsud název sloupce nedostaneš.
Pokud nad tím zavoláš fetch
. Tak ti to vrátí objekt
ActiveRow
. A ten už obsahuje jednotlivé názvy sloupců a
můžeš zavolat to $free_spots->parking_place_id
.
A protože to je už jeden řádek, tak je jasné, že volat nad ním
count()
je blbost, proto to ani nejde.
Snad jsem ti to aspoň trochu objasnil :-)
- parti
- Člen | 117
@Oli
hm ok prvni odstavec
„Tohle ti vytáhne objekt Selection. Což je kolekce řádků. Prostě něco,
co hodíš do feache a proiteruješ. Nebo nad tím můžeš zavolat tu metodu
count(). Odsud název sloupce nedostaneš.“
jsem pochopil ok
ale nerozumim cemu rikas „Pokud nad tím zavoláš fetch.“ fetch vim co
je ale kde presne myslis zavoals nad tim ?
Nemuze mi to ukazat?
Dekuji za pomoc
- Oli
- Člen | 1215
Takže pokud potřebuješ oboje, tak by to mohlo vypadat takhle:
$free_spots = $this->database->table('parking_reservation')
->where('parking_user_id IS NULL AND is_deleted = 0 AND to > ?', $this->today)
->order(isset($ordering['available_spots']) ? $ordering['available_spots'] : 'from DESC');
$free_first_spot = $free_spots->fetch();
{foreach $free_spots as $spot}
{$spot->parking_place->label}
{/foreach}
{$free_first_spot->parking_place->label}
- parti
- Člen | 117
@Oli Dekuji moc ted mi je to uz trochu jasny. Ale da se ted ta hodnota nastavit ve fromulari jako vychozi ?? Neco jako
$form->addText('parking_place_id', 'Parking place')
->setDefaultValue($free_first_spot->parking_place->label)
->setAttribute('placeholder', 'parking place');
Tento zapis neni dobre vyhodi mi to chybu Undefined variable:
free_first_spot. Takze takhle to asi nepujde.
Uzivatel nema moznost menit misto stani ale to mu je prideleno podle toho jak se
uvolni.On si vybere jenom datum od do.
Dekuji moc za pomoc a vysvetleni.