redirect problém s datovým typem

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

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 :)

Tabetha
Člen | 140
+
0
-

skús si dumpnúť $newId a čo ti to vypíše

Johny12369
Člen | 21
+
0
-

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
+
0
-

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
+
0
-

(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
+
0
-

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
+
0
-

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!