Práca s date a neexistujuca ID

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

Ahojte,

potreboval by som poradiť ako pracovať s date. Ukladám si do DB čas vo formáte 2016–05–28 01:21:24 teda TYP datetime. A potreboval by som ho vykresliť napríklad ako len 28.5.2016 a rôzne s ním pracovať.

Ďalej by ma zaujímalo ked renderujem niečo podľa id teda renderDefault($id) ako zabezpečiť to že ak ID neexistuje hodí to 404

Ďakujem

Mysteria
Člen | 797
+
0
-

Pokud používáš Nette Database, tak se to vrací jako DateTime typ, takže na tom můžeš použít třeba

->format('d. m. Y')
if (*id neexistuje*) $this->error('Not Found');
Fusek
Člen | 4
+
0
-

Mysteria napsal(a):

Pokud používáš Nette Database, tak se to vrací jako DateTime typ, takže na tom můžeš použít třeba

->format('d. m. Y')
if (*id neexistuje*) $this->error('Not Found');

Čo ak ho potrebujem napríklad rozdeliť a ťahám v array spolu s ostatními a podobne nie je na to nieč rozumnejšie ?

Mysteria
Člen | 797
+
0
-

Nechápu moc jak to myslíš. Možná sem hoď kus kódu, který používáš a čeho přesně chceš s tím datumem dosáhnout.

Fusek
Člen | 4
+
0
-
/**
     * @return \Nette\Database\Table\Selection
     * Vráti výpis všetkých noviniek
     */
    public function getNews()
    {
        return $this->database->table(self::NEWS_TABLE)->order('date DESC')->fetchAll();
    }

Vytiahnem si údaje o novinkách a vratia sa mi vo formáte 2016–05–28 01:21:24

potrebujem ich vykresliť do template

<td>25.5.2016</td>
<td>1:21:24</td>

a neviem ako ho spracovať do tejto podoby

GEpic
Člen | 566
+
0
-

Fusek napsal(a):

/**
     * @return \Nette\Database\Table\Selection
     * Vráti výpis všetkých noviniek
     */
    public function getNews()
    {
        return $this->database->table(self::NEWS_TABLE)->order('date DESC')->fetchAll();
    }

Vytiahnem si údaje o novinkách a vratia sa mi vo formáte 2016–05–28 01:21:24

potrebujem ich vykresliť do template

<td>25.5.2016</td>
<td>1:21:24</td>

a neviem ako ho spracovať do tejto podoby

Však ti to @Mysteria odpověděl. Nette\Database automaticky vrací místo 2016–05–28 01:21:24 objekt typu DateTime (https://api.nette.org/…ateTime.html). Takže si předáš záznamy do šablona a poté to použiješ v šabloně například takto:

<!-- 'vytvoreno' je sloupec s tvým datumem -->
<td>{$novinka->vytvoreno|date:'j.n.Y'}</td> <!-- (Datum ve formátu dd.mm.yyyy) -->
<td>{$novinka->vytvoreno|date:'H:i:s'}</td> <!-- (Datum ve formátu hodiny:minuty:sekundy) -->

EDIT:
A to druhé řeším takto (presenter):

public function renderNovinka($id = null)
{
	if ($id != null && $novinka = $this->novinkyModel->get($id) {
		// lets show it
	} else {
		throw new BadRequestException('Tato novinka neexistuje');
	}
}

Kde v modelu je poté např:

# ...

/**
 * @var int $key primarni klic
 * @return ActiveRow radek
 */
public function get($key) {
	return $this->database->table('novinky')->get($key);
}

# ...

Editoval GEpic (16. 7. 2016 21:45)