1

私はZendFramework1.11とPr​​opelORMを一緒に使用するのは初めてで、非常に単純なケースで立ち往生しています。URLhttp : //fle.localhost/domainのエラーは次のとおりです。

警告:require_once(phing / BuildException.php):ストリームを開くことができませんでした:11行目の/var/projects/library/vendor/propel/propel1/generator/lib/exception/EngineException.phpにそのようなファイルまたはディレクトリはありません

致命的なエラー:require_once():必要な'phing / BuildException.php'を開くことができませんでした(include_path ='/ var / projects / fle-portal / application / models / propel:/ var / projects / fle-portal / application /../ライブラリ:/ 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')/var/projects/library/vendor/propel/propel1/generator/lib/exception/EngineException.phpオンライン11

私のDomainControllerIndexActionは非常に単純です:

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

これは、Domain.phpでPropelオブジェクトクラスを呼び出しています。

<?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つのオブジェクトでもまったく同じことをしたので、非常にうまく機能するということです。ドメインオブジェクトに対してのみエラーが発生します...

エラーの原因は何だと思いますか?Phing構成?設定を推進しますか?コード?私を助けるためのアイデアはありますか?

4

2 に答える 2

1

これは、独自の Propel 生成モデル クラスと、generator/lib/model フォルダー内Domainの同じ名前を持つ Propel ベンダー クラスとの間の競合の問題です。

実際、Propel ベンダー クラスがそのコンテキスト外で実行されることによって引き起こされるため、発生したエラーは誤解を招くものです。コードが を試行すると、メソッドが存在しないDomain::getAll()ため、Propel ベンダー クラスは例外をスローします。getAll()しかし、その例外はphing/BuildException.phpインクルード パス上にないため (コンテキストの問題)、最初は表示されません。そのため、最初のエラーが発生します。ちょっとトリッキーなことです、私は告白します。

これは、生成されたオブジェクトにプレフィックスを付けることで修正できます。これを行うには、propel.classPrefixプロパティをbuild.propertiesファイルに設定し (生成されたオブジェクト モデルのカスタマイズに関する Propel のドキュメントを参照)、オブジェクト モデルを再構築します。ただし、それに応じてコードを変更する必要があることに注意してください。

于 2012-09-27T14:12:21.597 に答える
0

require_once(phing/BuildException.php): ストリームを開けませんでした: そのようなファイルやディレクトリはありません

これはあなたの問題です。ファイルが存在する必要があり、存在しない理由を見つける必要があります。

于 2012-09-25T17:26:35.113 に答える