redirect problém s datovým typem
- Johny12369
- Člen | 21
Zdravím,
potřeboval bych poradit jak mám vyřešit problém, když chci v redirectu
poslat hodnotu z objektu.
v presenteru:
$xml = simplexml_load_file($form->values->site);
if($xml == NULL){
$this->flashMessage('Wrong page.');
} else{
$site = $form->values->site;
$newSite = $this->siteRepository->addSite($form->values->site);
$newId = $this->siteRepository->getMaxId();
$iC = "UTF-8";
foreach($xml->channel->item as $item){
$title = iconv($iC, $iC, $item->title);
$link = iconv($iC, $iC, $item->link);
$description = iconv($iC, $iC, $item->description);
$pubDate = iconv($iC, $iC, $item->pubDate);
$newData = $this->dataRepository->addData($title, $link, $description, $pubDate, $newId);
}
}
if($xml && $newSite && $site && $newData && $newId){
$this->flashMessage($newId);
$this->redirect('Search:default', $newId);
} else{
$form->addError('Sorry, something went wrong.');
}
Nevím, co je proměnná $newId za datový typ, ale int viditelně není.
funkce getMaxId():
public function getMaxId()
{
return $this->findAll()->order('id_site DESC')->limit(1)->fetch();
}
Vím, že bych do redirectu měl poslat hodnotu INT, ale nevím v čem je v tomto případě problém nebo jak jí převézt do INT.
a estetický problém mám také u skupiny kódu $title = iconv($iC, $iC, $item->title); a ty další, kde musím hodnotu $item->title získat přes funkci iconv, protože klasické $title = $item->title nejde. Jde to deklarovat nějak hezčeji? Ptám se proto, protože prom. $pubDate je typu DATE a tímto způsobem to vyřešit nejde a mám v aplikaci chybu.
Děkuji moc za rady :)
- Johny12369
- Člen | 21
už vyřešeno. Stačí v tom objektu ukázat na id: $this->redirect(‚Search:default‘, $newId->id_site);
Ten druhý problém ale stále platí :(
- Vojtěch Dobeš
- Gold Partner | 1316
kde musím hodnotu $item->title získat přes funkci iconv, protože klasické $title = $item->title nejde
Jsi tajemný jako hrad v Karpatech :).
- Johny12369
- Člen | 21
(všechno viz kód nahoře)
tak stáhnu z netu xml soubor pomocí $xml =
simplexml_load_file($form->values->site);
Soubor vypadá:
<item>
<title>Novinky: Unlocker 1.9.2, Start Menu Reviver 1.0, Vuze 5.0 a další</title>
<link>http://extrawindows.cnews.cz/clanky/novinky-unlocker-192-start-menu-reviver-10-vuze-50-dalsi</link>
<description>text...</description>
<pubDate>Fri, 17 May 2013 22:00:00 +0000</pubDate>
<dc:creator>Petr Urban</dc:creator>
<guid isPermaLink="false">24473 at http://www.cnews.cz</guid>
</item>
aby to fungovalo tak to musím deklarovat: $title = iconv($iC, $iC, $item->title);, což ovšem nefunguje u $pubDate = iconv($iC, $iC, $item->pubDate); protože to je datového typu DATE.
Když to zkusím způsobem $title = $item->title;, tak se mi tam vloží prázdná hodnota.
Proto můj dotaz: Jde to napsat nějak jinak, než pomocí fce (iconv($iC, $iC, $item->title)), která mění kódování?
- jiri.pudil
- Nette Blogger | 1034
A zkoušel sis $item->title dumpnout? Nejspíš je to instance
SimpleXMLElement
. V tom případě přetypovat:
$title = (string)$item->title;
- Johny12369
- Člen | 21
Přetypování sem přesně potřeboval vědět :) Budu teda mít asi problém, když budu chtít vypsát data od nejdřívějšího nebo nejpozdějšího data, ale to nějak překousnu. Díky moc!