Hi guys, I didn't really want to bother until I tried everything, but I am stuck and cannot move on.
I am building an API for Gatsby website on Processwire and I cannot get l cannot get some of the localized data, no matter how am I trying to call it.
The page has two languages, default Czech and second English.
Even if I call directly for an English version of the page, I still get czech URL... ?
wire('pages')->get(1022)->url;
I also tried to set the context before getting the page, still getting czech URL.
$english = wire('languages')->get('en');
wire('user')->language = $english;
$page = wire('pages')->get(1022);
echo $page->url;
I am using this module https://processwire.com/modules/rest-api/ and this (simplified) code:
<?php
// Bootstrap processwire
namespace ProcessWire;
class Product {
// Get all products
public static function getAll() {
// Empty response
$response = new \StdClass();
$response->products = [];
// Getting all processwire pages
$pages = wire('pages')->find("template=product");
foreach ($pages as $page) {
// For each of page's language
$langs = $page->getLanguages();
foreach ($langs as $lang) {
// Fill product and add to response
$product = [
"lang" =>$lang->name, // Works fine, returns 'en'
"url" => $page->url($lang), //{"error":"Method Page::localUrl does not exist or is not callable in this context"}
"parent" => $page->parent->url($lang), //{"error":"Method Page::localUrl does not exist or is not callable in this context"}
"title" => $page->title->getLanguageValue($lang->id), // Works fine
"product_description" => $page->product_description->getLanguageValue($lang->id), // Works fine
"product_category" => $page->product_category->title->getLanguageValue($lang->id), // {"error":"Call to a member function getLanguageValue() on string"}
];
array_push($response->products, $product);
}
}
return $response;
}
}
My problems:
I have a selectbox field product_category in my template and I cannot get translated version of it. All other field types work fine.
I am always getting Czech URLS for both page and the parrent. I tried putting the language object or the ID as a parametere, but getting error above.
When I output the variable normally in the template, the field and the URL works fine. I don't know what I am doing wrong.
I will be glad for any help.
Thank you
Daniel