Domyślnie po włączeniu komponentu zend-i18n, tłumaczenie jest dostępne w formularzach. Jednak, jeśli chcemy przekazać zmienne do tłumaczenia, standardowy sposób nie zadziała, musimy trochę zmodyfikować klasę formularza UploadForm (Listing 2).
Zakładamy, że czytelnik skonfigurował prawidłowo komponent, wspierając się dokumentacją lub książką Zend Framework 3. Poradnik programisty, dlatego pominiemy konfigurację.
Warto zapoznać się również z artykułem „Jak zastosować Translator w Controller Zend Framework 3”, w którym zaprezentowano potrzebny kod w pliku module.config.php i klasie IndexController.php.
Interesujące nas fragmenty kodu zaprezentowano na Listingu 1, Listingu 2.
Listing 1. Fragment klasy IndexController.php
// Zend Framework 3 kurs
...
public function uploadAction() {
...
$uploadForm = new UploadForm($this->translator);
...
}
...
Listing 2. Fragment klasy UploadForm.php
// Translate formularz zend framework
...
use Zend\I18n\Translator\Translator;
...
class UploadForm extends Form implements InputFilterProviderInterface {
private $description = 'gif, jpeg, png, pdf, zip';
/**
* @var \Zend\I18n\Translator\Translator
*/
private $translator;
public function __construct(Translator $translator, $name = 'upload-form', $options = array())
{
$this->translator = $translator;
...
}
/**
* Tłumaczenie z pliku np. pl_PL.ini
* uploadForm_fileMimeTypeFalse = Nieprawidłowy typ pliku. Obsługujemy pliki: %s
*/
public function getInputFilterSpecification() {
return [
'file' => [
'required' => true,
'validators' => [
...
[
'name' => \Zend\Validator\File\MimeType::class,
'break_chain_on_failure' => true,
'options' => [
'mimeType' => 'image/gif, image/jpeg, image/png, image/x-png, application/pdf, application/zip',
'messages' => [
'fileMimeTypeFalse' => sprintf($this->translator->translate('uploadForm_fileMimeTypeFalse'), $this->description)
],
],
],
],
],
];
}
}
Wybrane książki:
- Adam Omelak: Zend Framework 3. Poradnik programisty, Wydawnictwo Helion, 2017.
Wybrane strony: