ZF2 .htaccess in built-in PHP server

ZF2 .htaccess in built-in PHP server

Для нормального функционирования zf2-приложения требуется наличие модуля mod_rewrite. В .htaccess все запросы через mod_rewrite зарулены на public/index.php

В документации запуск встроенного сервера описан так:

$ cd public
$ php -S localhost:80

Но т.к. .htaccess не подхватится, то при вызове, например, каптчи «http://localhost/user/captcha/ad291fb77e7c0cca7c3bd1f47aa2964e.png» сервер, вместо того, что бы отправить запрос в index.php попытается найти такой файл и выдаст 404-ю ошибку.

Решение простое. При запуске нужно явно указать вызов index.php при любых запросах. Так:

$ cd public
$ php -S localhost:80 index.php

Локализация ошибок работы с формой в ZF2

Локализация ошибок работы с  формой в ZF2

Перевод ошибок в ZF2 делается так:


//Application/Module.php
//...
use Zend\I18n\Translator\Translator;
use Zend\Validator\AbstractValidator;

class Module
{
public function onBootstrap(MvcEvent $e)
//...
$translator = new Translator();
$translator->addTranslationFile(
'phpArray',
'vendor/zendframework/zendframework/resources/languages/ru/Zend_Validate.php',
'default',
'ru_RU'
);
AbstractValidator::setDefaultTranslator(
new \Zend\Mvc\I18n\Translator($translator)
);

//...

Файл vendor/zendframework/zendframework/resources/languages/ru/Zend_Validate.php содержит перевод ошибок. По необходимости, недостающие переводы пишу сюда.

Если в проекте используется captcha, то аналогично подключается файл Zend_Captcha.php, который лежит рядом.

Локализации всего приложения делается так:

//config/autoload/global.php
//...
return array(
//...
'translator' => array(
'locale' => 'ru_RU'
),
//...
);

update: например можно сразу добавить

...
"Captcha value is wrong" => "Неверный код с картинки"
...