0

在我的管理员 cms 上,我可以添加 newsitems 并将“语言”列中的语言代码添加到 newsitem“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 回答