Visual paginator nepřijme číslo stránky?

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

Ahoj,
visual paginator tvořím pomocí továrničky.

Doma na lokále (php 5.2.10) i na pipni.cz (php 5.2.12) vše šlape jak má, nicméně po uploadu na active24 (php 5.2.12) mi prostě komponenta stojí pořád na stránce jedna. Router si všechny parametry přelouská, ale komponenta stojí pořád na straně 1.

úryvek při dumpu funční komponenty:

<?php
object(VisualPaginator) (10) {
   "paginator" private => object(Paginator) (4) {
      "base" private => int(1)
      "itemsPerPage" private => int(1)
      "page" private => int(2)
      "itemCount" private => int(0)
   }
   "page" => int(2)
   "template" private => NULL
   "invalidSnippets" private => array(0)
   "params" protected => array(1) {
      "page" => int(2)
   }
?>

a nefunkční z active 24:

<?php
object(VisualPaginator) (10) {
   "paginator" private => object(Paginator) (4) {
      "base" private => int(1)
      "itemsPerPage" private => int(1)
      "page" private => int(1)
      "itemCount" private => int(0)
   }
   "page" => int(1)
   "template" private => NULL
   "invalidSnippets" private => array(0)
   "params" protected => array(1) {
      "page" => string(1) "2"
   }
?>

page v params je tu jako string a její hodnota se už nikam nepromítne.

Nenapadne Vás, kde by mohl být problém? Díky!!

Používaná verze Nette (projekt trošku staršího data): 1.0-dev released on 2010–05–11

Felix
Nette Core | 1189
+
0
-

Mel jsem mozna podobny problem. Avsak u me byla chyba v route. Kdyz ti to funguje doma, ale jinde ne, tak to nevim.

Zkus zkontrolovat:

  • Routy
  • Spravne predavani page..vp-page
  • Prudukcni/Vyvojarsky rezim
  • Cache?
basovnik
Člen | 23
+
0
-

Mám úplně stejný problém a také zatím nevím, jak to vyřešit… nepřišel už na to někdo? Na testu mi vše jde, ale na Active24 ne…

basovnik
Člen | 23
+
0
-

Ahoj, řeším tento problém do teď! Opravdu jsem už bezradný. Na localhost mi paginator bez problémů funguje, ale na hostingu active24 je to jak na houpačce – chvíli jo, ale většinou ne. Parametr vp-page mi to přitom generuje správně. Prostě to jen pořád zůstává na stránce jedna.

Pro vp-page=2 je objekt následující (přes print_r()):

Nette\Paginator Object
(
    [base:Nette\Paginator:private] => 1
    [itemsPerPage:Nette\Paginator:private] => 5
    [page:Nette\Paginator:private] => 1
    [itemCount:Nette\Paginator:private] => 23
)

Občas to ale jde. Zajimavé je, že většinou, když to náhodou jde a vymažu obsah adresáře tmp, tak to zase přestane jít. Kde by mohl být problém? Prosím pomozte! Jinak budu nucen si to nějak naprogramovat ručně celé znova… Opakuji, že na localhostu mi to jde bez problémů!

Michalek
Člen | 210
+
0
-

Nepoužíváš na localhostu DummyStorage pro ukládání cache a na hostingu normální úložiště?

Já měl špatně nastavené předávání $page do {cache $id .'#'. $page} a dělalo to takové (zdánlivé) problémy.

Editoval Michalek (21. 7. 2011 12:51)

basovnik
Člen | 23
+
0
-

Michalek: Nevím kloudně, co to DummyStorage je, ale pokud se to musí extra nastavovat viz zde, tak jsem nic takového nenastavoval. Ty jsi teda řešil stejný problém? A jak jsi to vyřešil? Jsem v nette začátečník, a vysvětlení {cache $id .'#'. $page} mi bohužel nic moc neříká…

EDIT:

Teď to zase nešlo, ani po smazání složky www/application/temp, ale když jsem smazal obsah složky tmp, tak mi to zase začalo jít. Obsahem složky tmp byly soubory sess_[hash]. Na active24 je totiž zvláštní souborová struktura:

/home
/logs
/tmp
/www
/www/index.php
/www/css
/www/application/
/www/application/apps
/www/application/libs
atd...

bootstrapu mam navíc:

<?php
$session = Environment::getSession();
$session->setSavePath(SESSIONS_DIR);
$session->setExpiration("+ 31 days"); // doba musí být minimálně taková, jako nastavená expirace.
?>

a
index.php mám takhle:

<?php
// the identification of this site
define('SITE', '');

// absolute filesystem path to the web root

define('WWW_DIR', __DIR__);

if($_SERVER["SERVER_ADDR"] == "127.0.0.1")
{
	define('APP_DIR', WWW_DIR . '/../app');
	define('LIBS_DIR', WWW_DIR . '/../libs');
	define('TEMP_DIR', WWW_DIR . '/../temp');
	define('SESSIONS_DIR', WWW_DIR . '/../sessions');
}
else
{
	define('APP_DIR', WWW_DIR . '/application/app');
	define('LIBS_DIR', WWW_DIR . '/application/libs');
	define('TEMP_DIR', WWW_DIR . '/application/temp');
	define('SESSIONS_DIR', WWW_DIR . '/../tmp');
}
require APP_DIR . '/bootstrap.php';
?>

Může být někde chyba v tomhle? Možná s tím souvisí i problém, že mi nejde nastavit trvalé přihlášení na webu, a to jsem to dělal přesně podle návodu také.

EDIT 2:
A už to zase nejde. I když vymažu sessions i cache… :( Poradte!

EDIT 3:
A už to zase jede a to jsem s tím nic nedělal. Už se tomu musím smát.. :D

Editoval basovnik (21. 7. 2011 16:20)

basovnik
Člen | 23
+
0
-

Nevím, zda je to optimální řešení, ale problém vyřešilo přidání následujícího řádku:

<?php
$paginator->page = $this['vp']->getParam('page');
?>

Od té doby to funguje i na production. Ještě to budu chvíli pozorovat…

Editoval basovnik (23. 7. 2011 18:50)

vacatko
Člen | 10
+
0
-

Pro basovnik:
Díky za tento příspěvek, řeším úplně stejný problém na hostingu Active24 a vypadá to, že tvůj fix pomohl.