Wpis z mikrobloga

#symfony #php #twig

Pytanie o translate.

W layout mam

error_message|trans
W kontrolerze coś takiego

catch (\Exception $e) {
if ($e instanceof UserViewableException) {
$this->addFlash('error', $e->getMessage());

Wyjątek wywołuję w listenerze tak:

throw new UserViewableException('Object.message.cannotDelete');
Jak zrobić paramety do translate? Nie chciałbym używać trans w kontrolerze, niech to robi twig.
W tej chwili rozwiązałem to tak że nadpisałem Translator i parametry zagnieżdżam jako json, robiąc w uproszczeniu coś takiego

throw new UserViewableException('Object.message.cannotDelete##params##{"%used_in%":"Rekord ID object_id"}');
W translatorze parsuję to i wyciągam parametry z json robiąc

trans('Object.message.cannotDelete', array('%used_id%' => 'Rekord ID object_id'));
Nie do końca mi się to jednak podoba, może da się jakoś prościej?
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@gajowy_marucha: ja do takich celów rozszerzyłem sobie klasę Exception i parametry do tłumaczeń podaję w konstruktorze, nie wiem czy to optymalne rozwiązanie ale mi wystarcza

class MyException extends Exception {
__construct($message, $code, $previous, $params) {}
}
  • Odpowiedz