0

私はOOPSとZendにまったく慣れていません。Web アプリ コードの一部を Zend フレームワークに変換しています。コードが非常に長いため、ここにすべてのコードを掲載することはできません。以下のコードのようにモデルを作成し(2つの関数しか投稿できません)、コントローラーから関数内の変数にアクセスして、それらをHTMLテーブルに出力したいと思います(「ビュー」を使用する必要があると思いますそれ」、以下は私のモデルです:

  public function getVenueTypes()
 {
$poiTypes = array();
    if($this->_cache)
    {

        $key = $this->getCacheKey()."poiTypes_stats:{$this->language}";
    }
    if(!$poiTypes)
    {
        $sql = "SELECT poi_type_id, poi_type_name_".$this->language."
                AS
                poi_type_name
                FROM
                poi_types
                ORDER BY
                poi_type_name_".$this->language." ASC";
        $result = mysql_query($sql);
        if(!$result)
        {
            $message  = 'Invalid query: ' . mysql_error() . "\n";
            $message .= "Whole query: \n\n$sql\n";
            die($message);
        }
        while($row = mysql_fetch_array($result))
        {
            $poiTypes[] = array('id' => $row['poi_type_id'] ,'name' => $row['poi_type_name']);
        }
        print_r($poiTypes);
        if ($this->_cache)
        {
            $this->_cache->save($key, $poiTypes);               

        }    
    } 
foreach($poiTypes as $poiType)
    {
        $count_type = null;
        if($this->_cache)
        {
    $key = $this->getCacheKey()."poiTypeCount:{$poiType['id']}:{$this->metro_id}";
            $count_type = $this->_cache->load($key);
        }
        if(!$count_type)
        {
    $sql = "SELECT COUNT(*) FROM
                poi
                WHERE
                find_in_set('{$poiType['id']}', poi_type_id_array)
                AND poi_status = 1 AND poi_address_prefecture_id = '$this->metro_id'";
            $result = mysql_query($sql) or die(mysql_error());
        }  
        if(!$result)
            {
                $message  = 'Invalid query: ' . mysql_error() . "\n";
                $message .= "Whole query: \n\n$sql\n";
                die($message);
            }

        while($count = mysql_fetch_array($result))
        {
            $count_type[$poiType['id']][$this->metro_id] = $count['COUNT(*)'];
        }
        if($this->_cache)
        {
    $this->_cache->save($key, $count_type);
        }
    } 
 } 

どんな助けでも大歓迎です。私が十分に明確であることを願っています。事前に感謝します。

4

2 に答える 2

0

これが役立つかどうかはわかりませんが、これらの値にアクセスするにはいくつかのオプションがあります。

オプション 1: 必要な変数を含む配列を返す

return array($myVar1, $myVar2, ..., $myVarN);

オプション 2 (モジュラー性が低い): その関数内で html 文字列を作成し、文字列をエコーするか返します。

于 2012-10-17T04:42:42.733 に答える
0

Zend の基本的な知識があることを前提としています。

Zend フレームワークの基本的な考え方は、コントローラー、モデル、およびビューの間のリンクです

モデルファイル、BlaBla.php

Class Namespace_models_BlaBla extends Zend_Db_Table_Abstract{

   public function foo(){
       return 'hello world';
    }
}

あなたのコントローラーはBarControllerと言い、アクションはテストと言う

class BarController extends extends Zend_Controller_Action{  

      public function testAction(){
           $class = new Namespace_models_BlaBla();
           $this->view->string = $class->foo(); 

         }

    }

あなたのHTML側 // test.phtml

<?php echo $this->string; ?> /**this will output hello world **/
于 2012-10-17T04:53:53.980 に答える