Php 我是否需要破解ZendFramework1.10.8/Doctrine1.2.2来生成模型?

Php 我是否需要破解ZendFramework1.10.8/Doctrine1.2.2来生成模型?,php,zend-framework,doctrine,Php,Zend Framework,Doctrine,我已经开始阅读zend框架及其在条令中的使用,并实施了一个小项目来理解它。我已经到了需要生成模型的地步,就像在条令1.2.2 pdf手册中建议的生成脚本一样 在中找不到类“sfYaml” G:\php\u document\zendworkspace\BookingManager\library\document\document\Parser\Yml.php 在线80 我在谷歌上搜索了一下,发现人们在做什么。 对我来说,有一个命令行脚本来完成这项工作听起来太过分了。所以我的问题是,我真的需要命

我已经开始阅读zend框架及其在条令中的使用,并实施了一个小项目来理解它。我已经到了需要生成模型的地步,就像在条令1.2.2 pdf手册中建议的生成脚本一样

在中找不到类“sfYaml” G:\php\u document\zendworkspace\BookingManager\library\document\document\Parser\Yml.php 在线80

我在谷歌上搜索了一下,发现人们在做什么。
对我来说,有一个命令行脚本来完成这项工作听起来太过分了。所以我的问题是,我真的需要命令行吗,还是我无法加载application.ini文件来获取错误?
我的测试控制器是这样的:

class Testing_TesterController extends Zend_Controller_Action {

public function init(){
    $optionDoctrine = Zend_Registry::get("config")->toArray();
    $this->config = $optionDoctrine["doctrine"];
}


public function generateAction() {
    $this->view->drop="dropping database............";
    Doctrine_Core::dropDatabases();
    $this->view->create = "creating database........";
    Doctrine_Core::createDatabases();
    $this->view->models = "generating models....";
    //things started breadking from this line  Doctrine_Core::generateModelsFromYaml("$this->config[yaml_schema_path]","$this->config[models_path]");
//      $this->view->tables = "creating tables.......";
//          Doctrine_Core::createTablesFromModels($this->config["models_path"]);        
//      $this->view->success = "tables and model successfully generated";
//      $optionobject= Zend_Registry::get("config")->toArray();
//      $this->view->generate =$optionobject["doctrine"]["yaml_schema_path"];

}

 public function testAction(){

$dbs= Doctrine_Manager::connection()->import->listDatabases();
 $this->view->test = $dbs;
     //$this->view->test = "test";
 }
}
生成视图如下所示

<h1>My Manager:: generate page</h1><br>
<div style="text-align: left"><?php echo $this->drop; ?></div>
<div style="text-align: left"><?php echo $this->create; ?></div>
<div style="text-align: left"><?php var_dump($this->models); ?></div>
<div style="text-align: left"><?php echo $this->tables; ?></div>

我还采用了模块,这似乎使我的情况复杂化,那么你认为什么是最好的选择?感谢阅读您需要获取
sfYaml
组件并安装它。我认为这是svn回购作为一种
svn:external
的原则,但可能不是。。。你可以从网站上得到它

我不确定你在学什么教程,但如果你放弃了:

library
文件夹作为
sfYaml
并将
library/sfYaml
添加到include路径中,假设您已正确设置了所有其他内容,则应该可以


另外,使用Zend_控制器的命令行脚本是什么?您是否应该使用
Zend\u工具\u框架
基础设施或编写完全定制的脚本?不管怎样,我过去就是这样做的…

感谢您的快速响应。事实上,doctrine/vendor/sfYaml包含了类,这就是让我离开的原因,因为对我来说,doctrine应该找到它,因为它与我在其他doctrine toturial项目中使用的相同,到目前为止,我还没有尝试修复它什么都行。谢谢。你已经设置了Zend自动加载来使用Doctrine正确吗?如果我记得,除了注册条令名称空间之外,您还需要将autloader推到堆栈上……我想是的。我已经将我使用的作为引导类来编辑了这篇文章。我没有使用命令行。我在问是否可以不使用它从controllerWell生成模型类我确信它是可能的。。。如果我还记得有一个Symfony插件,它可以在你因为某种被上帝抛弃的原因而没有ssh访问权限时使用。但是,除非必须使用浏览器界面id,否则请坚持使用CLI。不管怎样,您现在出现错误的原因是它似乎无法自动加载sfYaml。不知道为什么我不记得有这个问题,但它不应该是唯一的尝试通过浏览器界面这样做。尝试将
条令/vendor/sfYaml
添加到include路径,然后在引导或控制器
init
中明确要求它。我没有“中心”条令安装,我将它们包含在每个项目的库中,因为可能会出现我想使用1.2版并试用2版的情况。那么在这种情况下,,添加到php包含路径将意味着有一个中心安装,除非有另一种方法来实现您建议的包含路径。谢谢您的链接。非常有用,但命令行再次被大量使用。似乎命令行是生成模型和插入装置的唯一方法。遗憾的是,我的尝试从php控制器获得它的工作仍然不起作用。无论如何感谢阅读。takeshin我看过它。它看起来很好。我在运行它时遇到了一些问题,但似乎无法在1.10.8中使用它。在重新声明路径时抛出了一些错误。解决方案之一是在application.ini.i中注释掉includePaths.library我想没有命令行不行,我要走Jon Lebensold的路
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
   protected function _initDoctrine(){
    require_once 'doctrine/Doctrine.php';


      $this->getApplication()->getAutoloader()->pushAutoloader(array('Doctrine','autoload'),"Doctrine");
 //$this->getApplication()->getAutoloader()->pushAutoloader(array('Doctrine','modelsAutoload'),"Doctrine");

    $manager = Doctrine_Manager::getInstance();
 //$manager->setAttribute(Doctrine_Core::ATTR_MODEL_LOADING,Doctrine_Core::MODEL_LOADING_AGGRESSIVE);
    $manager->setAttribute(Doctrine_Core::ATTR_AUTO_ACCESSOR_OVERRIDE,true);

    $doctrineConfig = $this->getOption('doctrine');

    $conn = Doctrine_Manager::connection($doctrineConfig['dsn'],'doctrine');

    return $conn;


}

protected function _initDoctrineConfig(){

    $conf = new Zend_Config($this->getOptions(),true);
    Zend_Registry::set('config',$conf);
    return $conf;
}


}