0

管理者のcmsで、ニュースアイテムを追加し、「言語」列の言語コードをニュースアイテム「en」または「nl」に追加できます。ブートストラップファイルでは、言語は次の方法で設定されます。

public function _initLanguage()
{
    $objSessionLanguage= new Zend_Session_Namespace('Zend_Lang'); 
    $objLocale = new Zend_Locale();
    $locale = new Zend_Locale();
    $language = $locale->getLanguage();
    $region = $locale->getRegion();
    Zend_Loader::loadClass('Zend_Controller_Request_Http');
    $request = new Zend_Controller_Request_Http();

    if($language=='nl' or $language=='en')
    {
        if($language=='nl')
        {
            $localFile = 'dutch.php';        
            $Locale = 'nl';
        }else
        {           {
                $localFile = 'english.php';      
                $Locale = 'en';

        }
        $objSessionLanguage->localFile=$localFile;
        $objSessionLanguage->Locale=$Locale;

    }else
    {
        if(!isset($objSessionLanguage->localFile))
        {
            $localFile = 'english.php';      
            $Locale = 'en';
        }else
        {
            $localFile = $objSessionLanguage->localFile;
            $Locale =$objSessionLanguage->Locale;
        }           
    }

    $objTranslate = new Zend_Translate('array', APPLICATION_PATH .'/../language/english.php', 'en');
    $objTranslate->addTranslation(APPLICATION_PATH .'/../language/'.$localFile, $Locale);
    $objTranslate->setLocale($Locale);
    Zend_Registry::set("Zend_Translate", $objTranslate);
}

ニュースリストにニュースアイテムを表示するには、言語に応じてニュースモデルのニュースアイテムを選択します。

<?php

class Admin_Model_News extends  Zend_Db_Table_Abstract
{
    protected $_modelName = 'news';
    protected $_modelLabel = 'News';
    protected $_name = 'news';  
    protected $_objGeneralSettingVar;

public function init()
{
    parent::init(); 
    $this->_objGeneralSettingVar =  Zend_Registry::get( "objGeneralSettingVar");
}    
public function fetchNewsList()
{
    $objSelect = $this->select()->limit(5);
    $objSelect->where ("language = '$language'");
    $objSelect->order("news_date DESC");

    return $this->fetchAll($objSelect)->toArray(); 
}
}

しかし、上記で

$objSelect->where ("language = '$language'");

ニュースアイテムは表示されません。私は何かが欠けていると確信していますが、それを見つけることができないようです。言語のニュースアイテムを選択する際に言語設定を使用するにはどうすればよいですか?

4

1 に答える 1

0

Admin_Model_Newsで使用している

$objSelect->where ("language = '$language'");

where句の$language場合ですが、どこにも設定されていないため、クエリを実行していますWhere language = null

関数fetchNewsListは次のようになります。-

public function fetchNewsList($language)
{
    $objSelect = $this->select()->limit(5);
    $objSelect->where ("language = '$language'");
    $objSelect->order("news_date DESC");

    return $this->fetchAll($objSelect)->toArray(); 
}

Admin_Model_Newsをどのように使用しているかは表示されませんが、次のようになります。-

$news = new Admin_Model_News();
$newList = $news->fetchNewsList(howeverYouGetlanguage());
于 2012-09-27T10:32:02.980 に答える