问题
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