2014-01-07 2 views
0

Конфигурация zend framework 2 по умолчанию зависит от файлов phtml для рендеринга рендеринга. Однако по соображениям безопасности я хочу изменить это на php.установить суффикс представления для файлов вида в zend framework 2

От this link Я понимаю, что мне нужно создать специальный помощник вида для этого или есть параметр, который я могу изменить, чтобы изменить суффикс из phtml на php и как это делается точно?

Обновление: Я получил его, но не так, как хочу. Если возможно, я хотел бы получить ответ от работы guessimtoolate. Так что я предпочитаю что-то подобное в моей module.config.php:

'view_manager' => array(
    'default_suffix' => 'php', 
    //etc... 
) 

ответ

1

Если моя память служит мой колодец, вы можете определить, что в default_suffix ключа в файле конфигурации вашего модуля под view_manager, например:

return array(
    // ... 
    'view_manager' => array(
     'default_template_suffix' => 'php', 
     // ... 
    ), 
    // ... 
); 

Это должно сделать шаблонные файловые преобразователи для поиска .php файлов вместо .phtml.

Не совсем уверен, как это улучшение, но это можно сделать.

UPDATE: К сожалению, я написал неправильно конфигурации имя ключа - он должен быть default_template_suffix и не default_suffix. Он используется, например: в Zend\Mvc\Service\ViewTemplatePathStackFactory, где рождаются решатели стека пути :).

+0

У меня есть работа с другими ответами, но я предпочитаю ваш ответ. Однако ваш код не работает. –

+0

offtopic Я хочу сделать это, потому что я думаю, что phtml не является стандартным расширением php-файла. Да, он может быть включен и выполнен как php, но если вызывается напрямую, то php просто показывает весь контент! –

+0

@ J.Rahmati Хотя не следует напрямую обращаться к файлам, так как ваш хост должен входить в каталог '/ public'. Поэтому мир не имеет прямого доступа к вашим .phtml-файлам, что делает это проблемой без защиты. – Sam

0

В вашем модуле приложения, файл module.php:

public function onBootstrap($e) 
{ 
    $app = $e->getApplication(); 
    $sl = $app->getServiceManager(); 

    $resolver = $sl->get('ViewTemplatePathStack'); 
    $resolver->setDefaultSuffix('php'); 
} 

Что происходит здесь, во время начальной загрузки вы захватить стек путь и устанавливает суффикс на распознаватель.

1

Попробуйте это в module.php:

//module.php 
public function onBootstrap(MvcEvent $e) 
{ 
    $application = $e->getApplication(); 
    $sm = $application->getServiceManager();   

    $sm->get('ViewTemplatePathStack')->setDefaultSuffix('php'); 
} 

Затем измените все .phtml файлы .php в проекте.

Смежные вопросы