Details
Description
I tried to use "zf create view", but got some exceptions.
This is patch:
<?php /** * Zend Framework * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://framework.zend.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@zend.com so we can send you a copy immediately. * * @category Zend * @package Zend_Tool * @subpackage Framework * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License * @version $Id$ */ /** * @see Zend_Tool_Project_Provider_Abstract */ require_once 'Zend/Tool/Project/Provider/Abstract.php'; /** * @category Zend * @package Zend_Tool * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Tool_Project_Provider_View extends Zend_Tool_Project_Provider_Abstract { /** * createResource() * * @param Zend_Tool_Project_Profile $profile * @param string $controllerName * @param string $actionName * @param string $moduleName * @return Zend_Tool_Project_Profile_Resource */ public static function createResource(Zend_Tool_Project_Profile $profile, $controllerName, $actionName, $moduleName = null) { if (!is_string($controllerName)) { require_once 'Zend/Tool/Project/Provider/Exception.php'; throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_View::createResource() expects \"controllerName\" is the name of a controller resource to create.'); } if (!is_string($actionName)) { require_once 'Zend/Tool/Project/Provider/Exception.php'; throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_View::createResource() expects \"actionName\" is the name of a controller resource to create.'); } $profileSearchParams = array(); if ($moduleName) { $profileSearchParams = array('modulesDirectory', 'moduleDirectory' => $moduleName); } $profileSearchParams[] = 'viewsDirectory'; $profileSearchParams[] = 'viewScriptsDirectory'; if (($viewScriptsDirectory = $profile->search($profileSearchParams)) === false) { require_once 'Zend/Tool/Project/Provider/Exception.php'; throw new Zend_Tool_Project_Provider_Exception('This project does not have a viewScriptsDirectory resource.'); } $profileSearchParams['viewControllerScriptsDirectory'] = array('forControllerName' => $controllerName); // XXXXXXXXX below is failing b/c of above search params if (($viewControllerScriptsDirectory = $viewScriptsDirectory->search($profileSearchParams)) === false) { $viewControllerScriptsDirectory = $viewScriptsDirectory->createResource('viewControllerScriptsDirectory', array('forControllerName' => $controllerName)); } $newViewScriptFile = $viewControllerScriptsDirectory->createResource('ViewScriptFile', array('forActionName' => $actionName)); return $newViewScriptFile; } /** * create() * * @param string $controllerName * @param string $actionNameOrSimpleName */ public function create($controllerName, $actionNameOrSimpleName) { if ($controllerName == '' || $actionNameOrSimpleName == '') { require_once 'Zend/Tool/Project/Provider/Exception.php'; throw new Zend_Tool_Project_Provider_Exception('ControllerName and/or ActionName are empty.'); } $this->_loadProfile(); $view = self::createResource($this->_loadedProfile, $controllerName, $actionNameOrSimpleName); if ($this->_registry->getRequest()->isPretend()) { $this->_registry->getResponse( 'Would create a view script in location ' . $view->getContext()->getPath() ); } else { $this->_registry->getResponse( 'Creating a view script in location ' . $view->getContext()->getPath() ); $view->create(); $this->_storeProfile(); } } }
When I use this patch (in ZF 1.8.2) and create a new controller, the names of the view script folder and the view script itself are mixed up. An example:
zf create foo
leads to this structure:
views/ scripts/ index/ index.phtml (was already there) foo.phtmlInstead, there should be a folder named foo with a file named index.phtml in it (which is what the original file achieves).
I don't have the time to fix this right now, but as it seems you have mixed up the parameters $actionName and $controllerName in createResource().
views/ scripts/ index/ index.phtml (was already there) foo.phtml