0

私はこのチュートリアルに従っています:Getting Started with Zend Framework 1.11

http://akrabat.com/wp-content/uploads/Getting-Started-with-Zend-Framework.pdf

、12 ページ、「アルバムのリスト」

  1. D:\program files (x86)\Zend\Apache2\htdocs\zf-tutorial\application\models\DbTable\Albums.php

    <?php
    
    class Application_Model_DbTable_Albums extends Zend_Db_Table_Abstract {
    
        protected $_name = 'albums';
    
        public function getAlbum($id)
        {
            ...
        }
        public function addAlbum($artist, $title)
        {
        ...
        }
    
        public function updateAlbum($id, $artist, $title)
        {
            ...
        }
        public function deleteAlbum($id)
        {
            ...
        }
    
    
    }
    

  1. D:\program files (x86)\Zend\Apache2\htdocs\zf-tutorial\application\controllers\IndexController.php

    <?php
    
    class IndexController extends Zend_Controller_Action  
    {
        public function indexAction() 
        $albums = new Application_Model_DbTable_Albums();
             $this->view->albums = $albums->fetchAll();
        }    
    }
    

  1. D:\program files (x86)\Zend\Apache2\htdocs\zf-tutorial\application\views\scripts\index\index.phtml

     <?php
     $this->title = "My Albums";
     $this->headTitle($this->title);
     ?>
     <p><a href="<?php echo $this->url(array('controller'=>'index',
     'action'=>'add'));?>">Add new album</a></p>
     <table>
     <tr>
     <th>Title</th>
     <th>Artist</th>
     <th>&nbsp;</th>
     </tr>
     <?php foreach($this->albums as $album) : ?>
     <tr>
     <td><?php echo $this->escape($album->title);?></td>
     <td><?php echo $this->escape($album->artist);?></td>
     <td>
     <a href="<?php echo $this->url(array('controller'=>'index',
     'action'=>'edit', 'id'=>$album->id));?>">Edit</a>
     <a href="<?php echo $this->url(array('controller'=>'index',
     'action'=>'delete', 'id'=>$album->id));?>">Delete</a>
     </td>
     </tr>
     <?php endforeach; ?>
     </table>
    

質問:

  1. Albums.php、なぜこれが必要なのか: protected $_name = 'albums';?

  2. IndexController.php

    を。 $albums = new Application_Model_DbTable_Albums();include/require "Albums.php" を使用しませんでした。このクラスをどのように使用できますApplication_Model_DbTable_Albumsか?

    b. $this->view->albums = $albums->fetchAll();これはどういう意味ですか: $this->view->albums? なぜ使用しないの$this->albumsですか?

  3. index.phtml

    を。$this->url(array('controller'=>'index','action'=>'add'))、このメソッドはどこで確認できますか: $this->url()?

    b. なぜforeach($this->albums as $album)ここで使用するのですか?$this->view->albumsIndexController.php のようではありませんか?

4

1 に答える 1

0

Albums.php、なぜこれが必要なのか: protected $_name = 'albums';?

Zend Framework で DbTable モデルを使用する場合 ( Application_Model_DbTable_Albums)、保護されたメンバー$_nameは、モデルが関連付けられているデータベース テーブルの名前である必要があります。DbTable モデルは、事実上、その 1 つのテーブルのデータベース アダプターになります。

$albums = 新しい Application_Model_DbTable_Albums(); include/require "Albums.php" を使用しませんでした。このクラス Application_Model_DbTable_Albums をどのように使用できますか?

予想される命名規則に準拠し、事前定義されたリソースに属するクラスとファイルは、Zend_Loaderによって自動的に自動ロードされます。クラスApplication_Model_DbTable_AlbumsとファイルApplication/Model/DbTable/Albums.phpはどちらも命名規則に従っており、定義済みのリソースに属しています。

$this->view->albums = $albums->fetchAll(); これはどういう意味ですか: $this->view->albums? なぜ $this->albums を使わないのですか?

$this->view->albums = $ablums->fetchAll();ビュー スクリプトで表示するため$albums->fetchAll()に、から取得した値をZend_View オブジェクトに代入する簡単な方法です。値は、ビュー スクリプトでエコーすることができますecho $this->albums。または、おそらく foreach でループしてから表示することができます。

$this->url(array('controller'=>'index','action'=>'add'))、このメソッドはどこで確認できますか: $this->url()?

これは実際には簡単に特定するのが少し難しいです。基本的な定義はZend_View ヘルパー リファレンスにあります。表示されるまで下にスクロールしてください。Zend_Controller リファレンス ルーター セクションに、より良い例があります。基本的にurl()ヘルパーは、ビュー スクリプトでリンクを作成するための推奨される方法です。これが唯一の方法ではなく、場合によっては最適な方法ではありません。

なぜここで foreach($this->albums as $album) を使用するのですか? IndexController.php のように $this->view->albums ではありませんか?

コントローラーでは、ビュー スクリプト (index.phtml) のビュー オブジェクトにデータを割り当てます。$this->view->data = $dataビュー オブジェクトにいるので、提供された data にアクセスするだけで済みます<?php echo $this->data ?>。データの場合は$this->albums、foreach ループを使用して反復できる行セット オブジェクト (Zend_Db_Row オブジェクトの配列) です。この方法を使用して、ほとんどの有効なデータ型をビューに割り当てることができます。

これはこれらの概念の非常に簡単な概要です。お役に立てば幸いです。

于 2013-04-26T09:45:38.810 に答える