nocytas Posted February 6, 2015 Share Posted February 6, 2015 Buenas amigos, Estoy intentando crear una nueva categoría en PS mediante php y usando la librerias de WebService oficales, pero no consigo que funcione. El codigo que estoy utilizando es: $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); $xml = $webService -> get(array('url' => PS_SHOP_PATH . '/api/categories?schema=blank'));//synopsis $resources = $xml -> children() -> children(); unset($resources->id); unset($resources->id_shop_default); unset($resources->position); unset($resources->date_add); unset($resources->date_upd); unset($resources->level_depth); unset($resources->nb_products_recursive); unset($resources->is_root_category); unset($resources->description); unset($resources->meta_title); unset($resources->meta_description); unset($resources->meta_keywords); unset($resources->associations); $resources->active = 1; $resources->id_parent = 0; $resources->id = 98765; $resources->id_parent = 0; $resources->name->language[0][0] = 'test'; $resources->link_rewrite->language[0][0] = 'test'; $opt = array('resource' => 'categories'); $opt['postXml'] = $xml -> asXML(); $xml = $webService -> add($opt); y siempre obtengo un el siguiente error: 'This call to PrestaShop Web Services failed and returned an HTTP status of 400. That means: Bad Request.' En particular el error es con las categorias, pues otro tipos de datos como estates (estados) o countrys (paises) si he conseguido manejarlos (añadir, editar y borrar) sin mayor problemas. Agradeceria cualquier ayuda al respecto Un saludo Link to comment Share on other sites More sharing options...
JRubio74 Posted February 6, 2015 Share Posted February 6, 2015 Es posible que el problema lo tengas al asignar id_parent = 0 (por cierto, lo tienes duplicado). Si miras las categorías que tiene el sistema (api/categories/1, api/categories/2...) verás qué id_parent tiene cada una de ellas. El directorio principal suele corresponder con la categoría 2, por lo que tu id_parent debería ser = 2 para crear una categoría principal. Otra posible problema es que estás dando un valor al id de la categoría y creo que no se puede hacer. Espero haberte ayudado. Link to comment Share on other sites More sharing options...
nocytas Posted February 6, 2015 Author Share Posted February 6, 2015 Gracias JRubio74 por responder tan rápidamente Si, ya vi el error en la categoría padre, pero hasta ese momento como aun no había conseguido añadir nada, pues no lo vi. Ciertamente después de muchas vueltas, conseguí añadir nuevas categoría, siempre y cuando no use el campo ID, aquí pongo el código que ya me funciona: $xml = $webService -> get(array('url' => PS_SHOP_PATH . '/api/categories?schema=blank'));//synopsis $resources = $xml -> children() -> children(); $resources->active = 1; $resources->id_parent = 2; $resources->name->language[0] = 'mi test'; $resources->link_rewrite->language[0] = 'mi_test'; $opt = array('resource' => 'categories'); $opt['postXml'] = $xml -> asXML(); $xml = $webService -> add($opt); El problema me surge en que necesito controlar las categorías que ya existen mediante un ID/CODIGO personalizado, para actualizar o añadir según convenga. Gracias nuevamente y un saludo Link to comment Share on other sites More sharing options...
JRubio74 Posted February 6, 2015 Share Posted February 6, 2015 Si la idea es sincronizar las categorías de Prestashop con las que tienes en una base de datos externa, puedes hacer lo siguiente: 1) Tener dos ids por categoría en tu base de datos externa, uno es el tuyo (autonumérico, por ejemplo) y otro el que asigna Prestashop a la categoría. 2) Descargarte las categorías que hay creadas en Prestashop a tu base de datos (método GET en api/categories) e insertarlas en tu base de datos con el id que tienen en prestashop 3) Si creas nuevas categorías en tu base de datos externa y quieres sincronizar, las que tienen id de prestashop se actualizan, y las que no tienen, se añaden 4) Cuando añades una categoría, Prestashop te responde con un XML en el que se encuentra el id de Prestashop. Guárdatelo en tu base de datos y la próxima vez que sincronices ya sabes que esta categoría la tienes que actualizar, no añadir. No sé si es lo que quieres hacer, pero igual te sirve. Saludos! 1 Link to comment Share on other sites More sharing options...
Recommended Posts