Problém s feed importem [Nette 2.4]

jAkErCZ
Člen | 322
+
0
-

Zdravím má takový problém,
a to při generování feedu mi to hází…

<?php
User Deprecated

Mk\Feed\Generators\Zbozi\Item::getReflection() is deprecated in C:\xampp\htdocs\e-shop\vendor\makr\feed\src\Generators\BaseItem.php:22
?>

A týká se to kódu

<?php
public function validate() {

		$reflection = $this->getReflection();

		foreach ($reflection->getProperties(\ReflectionProperty::IS_PUBLIC) as $v) {
			if ($v->getAnnotation('required')) {
				if (!isset($this->{$v->getName()})) {
					return FALSE;
				}
			}
		}

		return TRUE;
	}
?>

Mohu se zeptat jak se tento problém dá vyřešit?

Předem děkuji za pomoc

S pozdravem
jAK3r

Martk
Člen | 661
+
+1
-
$reflection = new Nette\Reflection\ClassType(get_called_class());
Ondřej Kubíček
Člen | 494
+
+1
-

tak ta chyba říká vše :) je to depracated, použij přímo phpčkové reflex – http://php.net/…flection.php

jAkErCZ
Člen | 322
+
0
-

Bomba díky…

Jenže sem si asi moc nepomohl

<?php
Use getProductName() or add annotation @property for Mk\Feed\Generators\Zbozi\Item::$productName in C:\xampp\htdocs\e-shop\vendor\latte\latte\src\Latte\Engine.php(161) : eval()'d code:16
?>
Ondřej Kubíček
Člen | 494
+
+1
-

akorat Nette\Reflection je discountinued bych nepoužíval, když nemusím…

@jAkErCZ řešíš přechod na 2.4 že?
tam nemůžeš volat magické metody, v tvém případě $item->productName, ta property by musela mít anotaci @propery, ale v lepší případě zavolej (případně si přidej) metodu getProductName(), která ti tu property vrátí, ale to ti všechno ta error hláška říká

jAkErCZ
Člen | 322
+
0
-

Ondřej Kubíček napsal(a):

akorat Nette\Reflection je discountinued bych nepoužíval, když nemusím…

@jAkErCZ řešíš přechod na 2.4 že?
tam nemůžeš volat magické metody, v tvém případě $item->productName, ta property by musela mít anotaci @propery, ale v lepší případě zavolej (případně si přidej) metodu getProductName(), která ti tu property vrátí, ale to ti všechno ta error hláška říká

No mám komponentu která asi je starší no… a potřebuji ji převést

<?php
class ZboziGenerator extends Generator {

    /** @var Context */
    private $connection;

    function generate()
    {

        $items = [
            $this->createItem(),
            $this->createItem(),
            $this->createItem(),
            $this->createItem(),
        ];

        foreach ($items as $item) {
            $this->addItem($item);
        }
    }

    protected function createItem()
    {
        $item = new Item();
        $item->setProductName('Name')   #název nabídky, povinné, doporučená délka 70 znaků
        ->setDescription('Description') #popis nabídky, povinné (doporučená délka do 1000 znaků)
        ->setUrl('http://www.seznam.cz') #adresa nabídky v eshopu, povinné
        ->setPriceVat(10) #cena, povinné; číselná hodnota, max. dvě desetinná místa
        ->setDeliveryDate(0) #dostupnost, povinné (celé číslo nebo datum ve formátu RRRR-MM-DD)
        ->setItemId(123) #identifikátor nabídky v eshopu, nepovinné (alfanumerické znaky)
        ->setEan(87458965) #kód obchodní položky (čárový kód), nepovinné
        ->setIsbn('978-1-78038-067-4') #identifikační číslo knihy, nepovinné
        ->setProductNo('PRO1548') #produktový kód výrobce, nepovinné
        ->setItemGroupId(10) #označení skupiny nabídek, nepovinné
        ->setManufacturer('Adidas') #výrobce produktu, nepovinné
        ->setBrand('Nike') #značka produktu, nepovinné
        ->setCategoryId(1) #ID kategorie Zboží.cz, nepovinné
        ->setProduct('Cerny') #název nabídky ve výsledcích vyhledávání, např. "+ dárek zdarma", nepovinné
        ->setVisibility(true) #zobrazování nabídky na Zboží.cz
        ->setCustomLabel('neco') #dodatečné označení nabídky, vytvoří skupinu - kolekce, sezoni akce
        ->setCustomLabel1('nic') #dodatečné označení nabídky, vytvoří skupinu - kolekce, sezoni akce
        ->setMaxCpc(10) #maximální cena za proklik
        ->setMaxCpcSearch(10.2) #maximální cena za proklik pro nezařazené nabídky
        ->setProductLine('iPod | iPod Touch') #produktová řada
        ->setListPrice(999) #doporučená koncová prodejní cena
        ->setReleaseDate(new \DateTime()); #datum oficiálního zahájení prodeje v ČR

        #category text
        $item->addCategoryText('Kategorie | Subkategorie');
        $item->addCategoryText('Kategorie | Subkategorie1');

        #images
        $item->addImage('http://placehold.it/350x150'); #adresa obrázku, nepovinné, doporučujeme uvádět; značku je možné opakovat
        $item->addImage('http://placehold.it/350x150');
        $item->addImage('http://placehold.it/350x150');

        #extra messages
        $item->addExtraMessage(ExtraMessage::EXTENDED_WARRANTY); #doplňkové informace o nabídce, @see http://napoveda.seznam.cz/cz/zbozi/specifikace-xml-pro-obchody/specifikace-xml-feedu/#EXTRA_MESSAGE
        $item->addExtraMessage(ExtraMessage::FREE_DELIVERY);

        #shops
        $item->addShopDepot(1234); #výdejní místo pro okamžitý odběr
        $item->addShopDepot(5678);

        #parameters
        $item->addParameter('Barva', 'Hnědá'); #parametry nabídky
        $item->addParameter('Váha', '10', 'Kg');

        return $item;
    }

}
?>

Tohle je ten kód…

a hází tu chybu přímo na

<?php
$this->addItem($item);
?>
Ondřej Kubíček
Člen | 494
+
+1
-

no podle té error hlášky bych hádal, že to padá někde v latté

každopádně settery ta tvoje Item má, tak si vygeneruj i gettery pokud je tam nemáš a někde v šabloně tu Item vypisuješ a voláš ->productName, tak to změn na getter ->getProductName()

jAkErCZ
Člen | 322
+
0
-

@OndřejKubíček

ZDroj

Myslím že tady je ten Item… ale úplně přesně nevím kde to upravit abych to nepokazil celé..

Editoval jAkErCZ (5. 2. 2018 13:21)