jiritomekeu Posted May 22, 2013 Share Posted May 22, 2013 Zdravím, když někdy jdu do košíku nebo po přihlášení nebo registraci, vyskočí mi v debug módu tato hláška. Trying to get property of non-object (/var/www/vhosts/luckyfour.cz/httpdocs/modules/blockcart/blockcart.php, line 26)v blockcart.php je od 26. řádku toto:[code]if ((int)$params['cart']->id_currency && (int)$params['cart']->id_currency != $this->context->currency->id) $currency = new Currency((int)$params['cart']->id_currency); else $currency = $this->context->currency;[/code] Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Opět nikdo neporadí? :-) od čeho je fórum, já myslel, že by se tu mělo diskutovat a hledat problém. Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 Zkus před && dát enter, ať vidíš v které části je problém, ať to vypadá takto a pak napiš na kterém řádku je problém if ((int)$params['cart']->id_currency && (int)$params['cart']->id_currency != $this->context->currency->id) $currency = new Currency((int)$params['cart']->id_currency); else $currency = $this->context->currency; Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Zkus před && dát enter, ať vidíš v které části je problém, ať to vypadá takto a pak napiš na kterém řádku je problém if ((int)$params['cart']->id_currency && (int)$params['cart']->id_currency != $this->context->currency->id) $currency = new Currency((int)$params['cart']->id_currency); else $currency = $this->context->currency; Tak jsem to tak udělal a chyba je hned na prvním řádku, takže v: if ((int)$params['cart']->id_currency Horší je, že to jednou vyhodí a pak to třikrát nevyhodí a většinou to udělá, když necháš zboží v košíku a odhlásíš se, tak hned po přihlášení a nebo když dáš zboží do košíku a klikneš na Objednávku ( tzn. Nákupní košík ), ale problém je v bloku košíku, který je na každé stránce. Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Tak jsem to tak udělal a chyba je hned na prvním řádku, takže v: if ((int)$params['cart']->id_currency Horší je, že to jednou vyhodí a pak to třikrát nevyhodí a většinou to udělá, když necháš zboží v košíku a odhlásíš se, tak hned po přihlášení a nebo když dáš zboží do košíku a klikneš na Objednávku ( tzn. Nákupní košík ), ale problém je v bloku košíku, který je na každé stránce. A když dáš při této chybě refresh, tak už je to v pohodě. Můžeš vyzkoušet: http://luckyfour.cz/index.php Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 Zkus rozšířit o $params['cart'] na začátku IFu if ( $params['cart'] && (int)$params['cart']->id_currency && (int)$params['cart']->id_currency != $this->context->currency->id) $currency = new Currency((int)$params['cart']->id_currency); else $currency = $this->context->currency; Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Zkus rozšířit o $params['cart'] na začátku IFu if ( $params['cart'] && (int)$params['cart']->id_currency && (int)$params['cart']->id_currency != $this->context->currency->id) $currency = new Currency((int)$params['cart']->id_currency); else $currency = $this->context->currency; Tak teď to háže chybu pořád... http://luckyfour.cz/index.php Btw: proč je tam vlastně to (int) před proměnnou? To je, že jde v každém případě o číselnou hodnotu? Ta chyba, kterou to háže, je že to není object, předpokládám? Myslím tu první, ne teď. Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Tak teď to háže chybu pořád... http://luckyfour.cz/index.php Btw: proč je tam vlastně to (int) před proměnnou? To je, že jde v každém případě o číselnou hodnotu? Ta chyba, kterou to háže, je že to není object, předpokládám? Myslím tu první, ne teď. Tak jsem odstranil to (int) na začátku z toho tvého návrhu a hází to chybu zase jinde... if ( $params['cart'] && (int)$params['cart']->id_currency && (int)$params['cart']->id_currency != $this->context->currency->id) $currency = new Currency((int)$params['cart']->id_currency); else $currency = $this->context->currency; if ($params['cart']->id_customer) Teď to háže chybu s objectem na posledním řádku, který zde vidíš. Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 To je aby, když to bude třeba string, nebo null, tak aby z toho udělalo celé číslo. Jednou mi to udělalo tu chybu co píšeš, ale teď už nic. Nedal jsi tam (int)$params['cart'] ? Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Přidal jsem tam to samé a zatím to vypadá v pořádku. Jestli to pomohlo, tak děkuju moc, jsem hloupej, že mě to nenapadlo, opravoval jsem tu celkem dost chyb, že už jsem z toho zmatenej. Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Bylo tam (int), ale dal jsem to už pryč a to samé jsem dal na ten další řádek a teď to vypadá fpohodě. Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Tak ne... teď to hází, když nechám zboží v košíku a odhlásím se a přihlásím toto: Fatal error: Call to a member function getProducts() on a non-object in /var/www/vhosts/luckyfour.cz/httpdocs/modules/blockcart/blockcart.php on line 41 Řádek 41 začíná takto: $products = $params['cart']->getProducts(true); $nbTotalProducts = 0; foreach ($products as $product) $nbTotalProducts += (int)$product['cart_quantity']; $cart_rules = $params['cart']->getCartRules(); Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 dej před to var_dump($params); ať vidíme s čím se dá pracovat Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 dej před to var_dump($params); ať vidíme s čím se dá pracovat ok, muzu vedet, co to znamena? :-) Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 ok, muzu vedet, co to znamena? :-) dal jsem to tam... vypsalo to moc promennych Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 vypíše ti to celý obsah proměnné ať je jaká je. tady teďka vidím, že z nějakého důvodu se ti nenaplní v $params['cart'], tak se to bude muset udělat ručně, vlož úplně na začátek této funkce tento kód : if( !$params['cart'] ) $params['cart'] = new Cart($params['id_cart']); a to co jsme upravovali na začátku můžeš vrátit. Teď už to pojede Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Teď to sice nehází chybu, ale když nechám v košíku zboží a přihlásím se znovu, tak to ukazuje že mám v košíku 1 ks zboží ale když na něj najedu, tak košík nevyjede, jako by byl prázdný. Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 A teď mi to hodilu chybu... Undefined index: id_cart (/var/www/vhosts/luckyfour.cz/httpdocs/modules/blockcart/blockcart.php, line 26) Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 tady před to ještě dej ten var_dump($params); Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 tady před to ještě dej ten var_dump($params); Hotovo Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 můžeš poslat co máš na řádku 27 ? Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 můžeš poslat co máš na řádku 27 ? To cos mi poslal ty... if( !$params['cart'] ) $params['cart'] = new Cart($params['id_cart']); Nechápu, jak to mlže takhle dělat chyby, jen jsem upravoval vzhled v blockcart.tpl, v tomhle souboru jsem vubec nic neupravoval a jeste jsem upravoval ajax-cart.js, aby to pridalo i ten horni radek nad seznam produktu, tak to fakt nechapu. Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 jasně, moje chyba, má tam být toto: if( !$params['cart'] ) $params['cart'] = new Cart((int)$params['cookie']->id_cart); špatně jsem to odzkoušel Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 jasně, moje chyba, má tam být toto: if( !$params['cart'] ) $params['cart'] = new Cart((int)$params['cookie']->id_cart); špatně jsem to odzkoušel už to zase hází tu chybu co jsme řešili... Trying to get property of non-object (/var/www/vhosts/luckyfour.cz/httpdocs/modules/blockcart/blockcart.php, line 30)[code]if ((int)$params['cart']->id_currency && (int)$params['cart']->id_currency != $this->context->currency->id) $currency = new Currency((int)$params['cart']->id_currency); else $currency = $this->context->currency; if ($params['cart']->id_customer) { $customer = new Customer((int)$params['cart']->id_customer); $taxCalculationMethod = Group::getPriceDisplayMethod((int)$customer->id_default_group); } else $taxCalculationMethod = Group::getDefaultPriceDisplayMethod();[/code] Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 tak nahoď var_dump($params); před to Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 tak nahoď var_dump($params); před to je to tam Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 (edited) tak to už nedává smysl, teď by to mělo jet, není teď problém v druhé části ? $this->context->currency->id; zkus odentrovat nebo dej před var_dump($this->context->currency->id); var_dump($params['cart']->id_currency); Edited May 23, 2013 by pilarj (see edit history) Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 tak to už nedává smysl, teď by to mělo jet, není teď problém v druhé části ? $this->context->currency->id; zkus odentrovat nebo dej před var_dump($this->context->currency->id); var_dump($params['cart']->id_currency); odentrovano a pridal jsem tam i ty var_dump... ja mam v tom takovej gulas.... Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 A dal jsi to tam ve stejném pořadí jako jsem poslal ? Jestli jo, tak je problém v té druhé polovině, tak ještě před to přidej: var_dump($this->context); Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 A dal jsi to tam ve stejném pořadí jako jsem poslal ? Jestli jo, tak je problém v té druhé polovině, tak ještě před to přidej: var_dump($this->context); jj dal jsem to tam tak, pridal jsem tam ted to posledni pred to. Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 tak ten nefunkční if uprav takto: if ( (int)$params['cart']->id_currency && is_object($this->context->currency) && (int)$params['cart']->id_currency != $this->context->currency->id) $currency = new Currency((int)$params['cart']->id_currency); else $currency = $this->context->currency; Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 tak ten nefunkční if uprav takto: if ( (int)$params['cart']->id_currency && is_object($this->context->currency) && (int)$params['cart']->id_currency != $this->context->currency->id) $currency = new Currency((int)$params['cart']->id_currency); else $currency = $this->context->currency; tak jsem to tam pridal, jdu testovat zase Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Ted to hodilo toto... Trying to get property of non-object (/var/www/vhosts/luckyfour.cz/httpdocs/classes/Carrier.php, line 526) tam se nachazi toto: $id_currency = $context->currency->id; Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 vrať se zpátky do blockcart.php a nahoru do funkce assignContentVars přidej toto: if( !is_object($this->context->currency) ) $this->context->currency = new Currency((int)$params['cart']->id_currency); Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 vrať se zpátky do blockcart.php a nahoru do funkce assignContentVars přidej toto: if( !is_object($this->context->currency) ) $this->context->currency = new Currency((int)$params['cart']->id_currency); jo a mam tamto nechat a tohle dat na zacatek? Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 jo a mam tamto nechat a tohle dat na zacatek? tak tohle uz je na me moc... Undefined index: img_dir (/var/www/vhosts/luckyfour.cz/httpdocs/cache/smarty/compile/443cf8b4d3c2da86a0a4ec888437ca143d02b0ae.file.blockcart.tpl.php, line 64) Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 jj, tamto tam nech, jen ty var_dumpy jestli jsi tam nechal, tak můžeš smazat. img_dir ... přidej do $this->smarty->assign(array( ... 'img_dir' => _THEME_IMG_DIR_, ... )); je jedno kam tam, nejlépe někde doprostřed Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 tak tohle uz je na me moc... Undefined index: img_dir (/var/www/vhosts/luckyfour.cz/httpdocs/cache/smarty/compile/443cf8b4d3c2da86a0a4ec888437ca143d02b0ae.file.blockcart.tpl.php, line 64)to uz jsou spise smarty chyby... Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 to uz jsou spise smarty chyby... jsem to opravil ty podminky... chybelo vsude {if isset($promenna)} ted to zatim slape Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Vypadá to, že je to vyřešené, tak moc děkuji, je vidět, že se vyznáš. Těch pár chyb, co tam ještě hází smarty, už zvládnu. Chtěl jsem se spíš ještě zeptat, je možné dostat do shrnutí objednávky doručovací adresu, kterou zákazník zvolil? Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 Myslíš do souboru order-confirmation.tpl ? Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Myslíš do souboru order-confirmation.tpl ? u cashondelivery je to validation.tpl a u bankwire je to payment_execution.tpl chtel bych to tam dat neco jako overeni pro klienta ( pouze dorucovaci adresu ) na jeden radek neco jako jsem to pomoci promennych vlozil do nakupniho kosiku u vyberu adres. Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 musíš pro každou platbu upravit php controller aby jsi dostal do smarty proměnou s tou adresou. Například pro cashondelivery musíš upravit soubor /modules/cashondelivery/controllers/front/validation.php a v něm funkci initContent(), kde si musíš získat adresu nějak takto : $adresa = new Adress((int)$this->context->cart->id_address_delivery); a pak v $this->context->smarty->assign() přiřadíš například 'ulice' => $adresa->address2; a tak tam naskládáš co chceš a pak to normálně můžeš použít v šabloně. To stejné musíš udělat i u bankwire Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 musíš pro každou platbu upravit php controller aby jsi dostal do smarty proměnou s tou adresou. Například pro cashondelivery musíš upravit soubor /modules/cashondelivery/controllers/front/validation.php a v něm funkci initContent(), kde si musíš získat adresu nějak takto : $adresa = new Adress((int)$this->context->cart->id_address_delivery); a pak v $this->context->smarty->assign() přiřadíš například 'ulice' => $adresa->address2; a tak tam naskládáš co chceš a pak to normálně můžeš použít v šabloně. To stejné musíš udělat i u bankwire Zkusím a dám vědět. Děkuju moc za tvou pomoc, nějak se totiž ztrácím v OOP :-( Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Fatal error: Class 'Adress' not found in /var/www/vhosts/luckyfour.cz/httpdocs/modules/cashondelivery/controllers/front/validation.php on line 73 Link to comment Share on other sites More sharing options...
pilarj Posted May 23, 2013 Share Posted May 23, 2013 new Address ... jsou tam 2 d ... pořád se mi to plete Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Omlouvám se, byla tam pouze chyba ve slově new Adress... musí být dvě "d" - new Address, jinak to funguje na výbornou. Díky moc Link to comment Share on other sites More sharing options...
jiritomekeu Posted May 23, 2013 Author Share Posted May 23, 2013 Jo, funguje to parádně. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now