2011-06-19 14 views
1

リファレンスガイドからゲストブックのサンプルを実装しました。Zend Framework:メソッド "getDbTable"が存在せず、__call()にトラップされていません

私はGuestbookControllerにこれを追加しました:

public function editAction() 
{ 
    $model = new Application_Model_Guestbook(); 

    $request = $this->getRequest(); 
    if ($request->isPost()) { 
     Print_r('posted');die(); 
    } 
    $model = Application_Model_GuestbookMapper::find($this->getRequest()->getParam('id'), $model); 
    $form = new Application_Form_Guestbook(array('model' => $model)); 

    $this->view->form = $form; 
} 

そして編集アクションへのリンクを提供するために、ビューのインデックスを変更した:

<?php foreach ($this->entries as $entry): ?> 
    <?php $url = $this->url(
     array(
      'controller' => 'guestbook', 
      'action'  => 'edit', 
      'id'=>$entry->id 
     ), 
     'default', 
     true) 
    ?> 
<dt><?php echo $this->escape($entry->email) ?></dt> 
<dd><a href="<?php echo $url; ?>"><?php echo $this->escape($entry->comment) ?></a></dd> 
<?php endforeach ?> 

マッパーが標準です - まっすぐにコピーし、リファレンスガイドから貼り付けてください。

ます(http://クイックスタート/ゲストブック/編集/ ID/1)を介してIをクリックすると、私は例外に直面しています:[方法 "getDbTableは" 存在しないと(__call中に閉じ込められていなかった)]

getDbTable()は、同じファイル内にあるfind()関数によって呼び出されます。なぜ、getDbTable()が見つからないのですか?

私が実行しています:PHPバージョン5.3.3-7 + squeeze1を、ZendのエンジンV2.3.0は、Apache/2.2.16(Debianの)

+0

ますので、それを静的に呼び出すと、静的メソッドではありません。 – venimus

+0

public function find($ id、Application_Model_Guestbook $ guestbook) { $ result = $ this-> getDbTable() - > find($ id); if(0 == count($ result)){ return; } $ row = $ result-> current(); ($ row-> id) - > setEmail($ row-> email) - > setComment($ row-> comment) - > setCreated($ row-> created); $ guestbook-> setId } – Grokling

+0

申し訳ありません、そのフォーマットは恐ろしいです!読みやすいバージョンについては、[link](http://framework.zend.com/manual/en/learning.quickstart.create-model.html)のコードを参照してください。 私は他の場所で見つけたfind()の呼び出し例に従っています。私の限られた理解は、私がパラメータとしてApplication_Model_Guestbook参照を渡す限り、オブジェクトはメソッドの影響を受けることを示唆しています。 – Grokling

答えて

0

は、あなたのクラスApplication_Model_GuestbookMapperメソッドgetDbTableを(必要)

+0

それは既にその方法を持っています - それはリファレンスガイドにあります。完全なリストはここをクリックしてください:http://framework.zend.com/manual/en/learning.quickstart.create-model.html – Grokling

+0

私はすでに知っていますが、どこかで間違いを犯した、あるいは完全に読んでいない。どんなものでも、例外は:あなたのメソッドgetDbTable()は定義されていないので、それを見てください – Ben

関連する問題