2012-09-22 75 views
1

我是新的Zend Framework 1.11和Propel ORM,我遇到了一个非常简单的案例。这里是关于URL http://fle.localhost/domain错误:警告:require_once(phing/BuildException.php):未能打开流

Warning: require_once(phing/BuildException.php): failed to open stream: No such file or directory in /var/projects/library/vendor/propel/propel1/generator/lib/exception/EngineException.php on line 11

Fatal error: require_once(): Failed opening required 'phing/BuildException.php' (include_path='/var/projects/fle-portal/application/models/propel:/var/projects/fle-portal/application/../library:/var/projects/library/vendor/zendframework/zendframework1/library:/var/projects/library/vendor/propel/propel1/runtime/lib:/var/projects/library/vendor/propel/propel1/generator/lib:/var/projects/library:.:/usr/share/php:/usr/share/pear') in /var/projects/library/vendor/propel/propel1/generator/lib/exception/EngineException.php on line 11

我的网域控制器的indexAction十分简单:

public function indexAction() 
{ 
    $this->view->messages = $this->_helper->flashMessenger->getMessages(); 
    $this->view->collDomains = Domain::getAll(); 
} 

这一个是调用的Propel对象类Domain.php:

<?php 

/** 
* Skeleton subclass for representing a row from the 'domain' table. 
* 
* You should add additional methods to this class to meet the application requirements. 
* This class will only be generated as long as it does not already exist in the output 
* directory. 
* @package propel.generator.fleazup 
*/ 
class Domain extends BaseDomain 
{ 
    public static function getAll() 
    { 
     return DomainPeer::doSelect(new Criteria()); 
    } 
} 

另外,在视图中没有任何困难:views/script/domain/index.phtml:

<!-- CONDITION: if there are domains --> 
<?php 
if (!empty($this->collDomains)): 
?> 

     <!-- if condition ok, display domains table --> 
      <!-- Page header --> 
      <div class="row"> 
       <div class="span12"> 
        <div class="page-header"> 
         <h1>Domains List</h1> 
        </div> 
       </div> 
      </div> 

      <!-- Flash messages --> 
      <div> 
       <?php if (count($this->messages)) : ?> 

        <div class="alert alert-info"> 
         <a class="close" data-dismiss="alert" href="#">×</a> 
         <ul id="messages"> 
          <?php foreach ($this->messages as $message) : ?> 
           <li><?php echo $this->escape($message); ?></li> 
          <?php endforeach; ?> 
         </ul> 
        </div> 
       <?php endif; ?> 
      </div> 

      <!-- Link to add action --> 
      <div> 
       <p><a href="<?php echo $this->url(array('controller'=>'domain', 'action'=>'add'));?>">Add a new domain</a></p> 
      </div> 

      <!-- domains table --> 
      <table class="table table-striped"> 
       <thead> 
        <tr> 
         <th>Id</th> 
         <th>Label</th> 
         <th>Actions</th> 
        </tr> 
       </thead> 

       <tbody> 
        <?php foreach ($this->collDomains as $domain): ?> 
        <tr> 
         <td><?php echo $this->escape($domain->getId()) ?></td> 
         <td><?php echo $this->escape($domain->getLabel()) ?></td> 
         <td> 
          <a href="<?php echo $this->url(array('controller'=>'domain', 'action'=>'modify', 'id'=>$this->escape($domain->getId())));?>">Modify</a> 
          <a href="<?php echo $this->url(array('controller'=>'domain', 'action'=>'delete', 'id'=>$this->escape($domain->getId())));?>">Delete</a> 
         </td> 
        </tr> 
        <?php endforeach; ?> 
       </tbody> 
      </table> 

     <!-- If condition KO --> 
     <?php else: ?> 
      <!-- Page header --> 
      <div class="row"> 
       <div class="span12"> 
        <div class="page-header"> 
         <h1>Domains List</h1> 
        </div> 
       </div> 
      </div> 

      <!-- Link to add action --> 
      <div> 
       <p><a href="<?php echo $this->url(array('controller'=>'domain', 'action'=>'add'));?>">Add a new domain</a></p> 
      </div> 

      <!-- Message --> 
      <p>No domain to display.</p> 

    <!-- End of condition -->   
    <?php endif; ?> 

我不明白的是我对2个其他对象完全一样,它工作得很好。我只收到Domain对象的错误...

您认为,错误来自哪里? Phing配置?推进配置?代码? 任何想法帮助我?

回答

0

require_once(phing/BuildException.php): failed to open stream: No such file or directory

这是你的问题。该文件应该存在,你需要找出为什么它不存在。

1

这是您自己的Propel生成的模型类Domain与在the generator/lib/model folder中承载相同名称的Propel供应商类之间的冲突问题。

实际上,所引发的错误是误导性的,因为它是由Propel供应商类在其上下文之外执行的。当您的代码尝试Domain::getAll()时,Propel供应商类会抛出异常,因为方法getAll()不存在。但是,这个异常一开始就看不到,因为phing/BuildException.php不在包含路径(上下文问题)上:这就是为什么会出现初始错误。我承认,有点棘手的东西。

您可以在为生成的对象添加前缀中修复此问题。为此,请将propel.classPrefix属性设置为build.properties文件(read the Propel documentation on Customizing Generated Object Model)并重建对象模型。但要小心,你将不得不相应地修改你的代码。

+0

当我切换到作曲家自动加载器时,只是遇到了同样的情况。我的命名冲突是我的搜索索引类“索引”。 –

相关问题