How can I generate XML application configuration using Zend_Tool?

北慕城南 提交于 2019-12-23 21:56:27

问题


When creating a new project using zf create project myproject it will create a default project layout with an application.ini in the configs folder. Where can I change these default settings so that it generates (and uses) an XML file (application.xml)? I've looked at the documentation for Zend_Tool (http://framework.zend.com/manual/en/zend.tool.html), but there seems to be no information on how to do this.

And suppose you'd like to use a different default folder layout (ie. use htdocs instead of public as your document root), is there a way to specify this as well?

Any pointers to relevant information (btw I've looked at the Quickstart, nothing relevant is mentioned there unless I'm overlooking it)?

edit

I already tried creating a profile (stored in .zf/project/profiles), and used that to create a project (using zf create project myproject myprofile) but that doesn't change anything, even though the .zfproject.xml file in the root of the new project does contain the <applicationConfigFile type="xml"/> setting...

The new project contains this (as you can see, it's just the default settings, only the type of applicationConfigFile has been changed) :

<?xml version="1.0"?>
<projectProfile type="default" version="1.10">
  <projectDirectory>
    <projectProfileFile filesystemName=".zfproject.xml"/>
    <applicationDirectory classNamePrefix="Application_">
      <apisDirectory enabled="false"/>
      <configsDirectory>
        <applicationConfigFile type="xml"/>
      </configsDirectory>
      <controllersDirectory>
        <controllerFile controllerName="Index">
          <actionMethod actionName="index"/>
        </controllerFile>
        <controllerFile controllerName="Error"/>
      </controllersDirectory>
      <formsDirectory enabled="false"/>
      <layoutsDirectory enabled="false"/>
      <modelsDirectory/>
      <modulesDirectory enabled="false"/>
      <viewsDirectory>
        <viewScriptsDirectory>
          <viewControllerScriptsDirectory forControllerName="Index">
            <viewScriptFile forActionName="index"/>
          </viewControllerScriptsDirectory>
          <viewControllerScriptsDirectory forControllerName="Error">
            <viewScriptFile forActionName="error"/>
          </viewControllerScriptsDirectory>
        </viewScriptsDirectory>
        <viewHelpersDirectory/>
        <viewFiltersDirectory enabled="false"/>
      </viewsDirectory>
      <bootstrapFile filesystemName="Bootstrap.php"/>
    </applicationDirectory>
    <dataDirectory enabled="false">
      <cacheDirectory enabled="false"/>
      <searchIndexesDirectory enabled="false"/>
      <localesDirectory enabled="false"/>
      <logsDirectory enabled="false"/>
      <sessionsDirectory enabled="false"/>
      <uploadsDirectory enabled="false"/>
    </dataDirectory>
    <docsDirectory>
      <file filesystemName="README.txt"/>
    </docsDirectory>
    <libraryDirectory>
      <zfStandardLibraryDirectory enabled="false"/>
    </libraryDirectory>
    <publicDirectory>
      <publicStylesheetsDirectory enabled="false"/>
      <publicScriptsDirectory enabled="false"/>
      <publicImagesDirectory enabled="false"/>
      <publicIndexFile filesystemName="index.php"/>
      <htaccessFile filesystemName=".htaccess"/>
    </publicDirectory>
    <projectProvidersDirectory enabled="false"/>
    <temporaryDirectory enabled="false"/>
    <testsDirectory>
      <testPHPUnitConfigFile filesystemName="phpunit.xml"/>
      <testApplicationDirectory>
        <testApplicationBootstrapFile filesystemName="bootstrap.php"/>
      </testApplicationDirectory>
      <testLibraryDirectory>
        <testLibraryBootstrapFile filesystemName="bootstrap.php"/>
      </testLibraryDirectory>
    </testsDirectory>
  </projectDirectory>
</projectProfile>

回答1:


Good Question.

You need some kind of project profile. Have a look in:

library\Zend\Tool\Project\Provider\Project.php

There is an section with an default config.

 protected function _getDefaultProfile()
    {
        $data = <<<EOS
<?xml version="1.0" encoding="UTF-8"?>
<projectProfile type="default" version="1.10">
    <projectDirectory>
        <projectProfileFile />
        <applicationDirectory>
            <apisDirectory enabled="false" />
            <configsDirectory>
                <applicationConfigFile type="ini" />

Last week there was an good VideoScreencast explaining how to create your own Zend Tool Providers, i think this can help.

Update:

I have checked the sourceCode, looks like the filename is not changeable.

class Zend_Tool_Project_Context_Zf_ApplicationConfigFile extends Zend_Tool_Project_Context_Filesystem_File
{

    /**
     * @var string
     */
    protected $_filesystemName = 'application.ini';

Was not able to found an method to set it to xml.

Introducing Zend Tool



来源:https://stackoverflow.com/questions/2758393/how-can-i-generate-xml-application-configuration-using-zend-tool

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!