Problém s feed importem [Nette 2.4]
- jAkErCZ
- Člen | 322
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
- Ondřej Kubíček
- Člen | 494
tak ta chyba říká vše :) je to depracated, použij přímo phpčkové reflex – http://php.net/…flection.php
- Ondřej Kubíček
- Člen | 494
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
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) metodugetProductName()
, 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
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()