Ich habe einen Controller, der als API-Endpunkt in Magento 2 fungiert. Ich muss eine Antwort auf eine andere Sprachbasis haben, die auf übergebenen Parametern basiert. Dieser Controller kann auf das Modell usw. zugreifen.
zum Beispiel:
public function execute()
{
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');
}
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
try {
$lang = $this->getRequest()->getParam('lang');
if($lang == 'en'){
$message = 'who are you';
$data['var_1'] = "Live";
}elseif($lang == 'jp'){
$messsage = 'あなたは誰';
$data['var_1'] = "ライブ";
}
return $this->_formatResponse(500,$message,$data);
} catch (\Exception $ex) {
$message = $ex->getMessage();
return $this->_formatResponse(500,$message);
}
}
protected function _formatResponse($status, $message = '', $data = [])
{
$result = $this->_resultJsonFactory->create();
$result->setHttpResponseCode($status);
return $result->setData([
'status' => $status,
'message' => $message,
'data' => $data
]);
}
Wie kann ich erreichen, dass diese Übersetzungsnachricht dynamisch verwaltet wird, wenn viele Benutzer auf meinen Controller zugreifen?
Antworten:
Der folgende Controller-Code funktioniert für mich, ändert jedoch auch die Store-Ansicht für das Front-End (falls dieselbe Sitzung für den API-Aufruf und die Website selbst vorhanden ist).
quelle