LifeType 中文開發論壇

開發 => 核心補強 => 主題作者是: nanguaxp 於 五月 18, 2006, 02:07:01 下午



主題: 为分类加上图标的问题
作者: nanguaxp五月 18, 2006, 02:07:01 下午
刚下了一个新的LIFETYPE1。03用的挺舒服的,
以前做JAVA开发,lifetype的MVC模式真的是不错,虽然我不会PHP,但很多DAO的代码都能看懂,所以就想自己加些功能。
看到一些BLOG上与给分类添家家图标的功能,如下面这个网站
http://zhuoqun.net/blog/dreamer/default.asp?cateID=6

所以也想在lifetype中加上此功能,在数据库的articleCategory表中增加了一个字段icon,用来存放该分类的图片,这里手动添加了一条数据,打算做完显示后再去做后台添加分类时候选择图标的功能,,修改了如下代码
class / dao / Articlecategory.class.php中
程式碼:

var $_icon;

//新增加的功能,选择文章分类所带的小图标 _ Start

function setIcon( $newIcon ){
$this->_icon = $newIcon;
}
function getIcon(){
return $this->_icon;
}

程式碼:
//将原来的构造函数给注释掉,新加了icon相关的一个构造函数

function ArticleCategory( $name, $url, $blogId, $inMainPage,$description = "", $numArticles = 0, $properties = Array(), $id = -1, $lastModification=null, $parentId = null,$icon)
{
$this->DbObject();
$this->_name = $name;
            $this->_url = $url;
$this->_id = $id;
            $this->_blogId = $blogId;
    $this->setInMainPage( $inMainPage );
            $this->_numArticles = $numArticles;
$this->setProperties( $properties );
$this->_parentId = $parentId;
$this->_description = $description;
$this->_lastModification = new Timestamp($lastModification);
$this->_articles = Array();
$this->_numArticles = Array();

//
$this->_icon = $icon;
}



再之后,将class/dao/articlecategorys.class.php这里的代码,用来构造和填充articleCategory对象的相关的SQL代码中,都加上了 c.icon AS icon,也就是取到了这条记录。 那些select * 的我就没改了..
 填充的时候调用的
_fillCategoryInformation方法中,加了最后一条:
程式碼:
        function _fillCategoryInformation( $query_result )
        {
        $category = new ArticleCategory( $query_result["name"],
                                             $query_result["url"],
                                             $query_result["blog_id"],
                                             $query_result["in_main_page"],
$query_result["description"],
                                             $query_result["num_articles"],
unserialize($query_result["properties"]),
                                             $query_result["id"],
//这里新加的图标信息
$query_result["icon"]
);

但现在执行后报错误,错误如下:

Exception message: Missing argument 11 for articlecategory()
Error code: 2
-- Backtrace --
f:\works\greenamp\www\lifetype\class\dao\articlecategory.class.php(37): articlecategory
f:\works\greenamp\www\lifetype\class\dao\articlecategories.class.php(312): articlecategory.articlecategory
f:\works\greenamp\www\lifetype\class\dao\articlecategories.class.php(534): articlecategories._fillcategoryinformation
f:\works\greenamp\www\lifetype\class\dao\articles.class.php(424): articlecategories.getarticlecategoriesbyids
f:\works\greenamp\www\lifetype\class\action\defaultaction.class.php(174): articles.getblogarticles
f:\works\greenamp\www\lifetype\class\controller\controller.class.php(309): defaultaction.perform
f:\works\greenamp\www\lifetype\index.php(42): blogcontroller.process

说是构造 对象的时候缺少第11个参数,也就是ICON那个参数,我现在找不到错误,高手帮忙看看, 了 。


主題: Re: 为分类加上图标的问题
作者: markwu五月 18, 2006, 08:31:07 下午
那是因為沒有預設值 (default value)

程式碼:
function ArticleCategory( $name, $url, $blogId, $inMainPage,$description = "", $numArticles = 0, $properties = Array(), $id = -1, $lastModification=null, $parentId = null,$icon)

你看一下 articleCateogry 這些參數從 description 開始,就都有預設值,可是 $icon 沒有預設值。

所以當系統呼叫 articleCategory(a, b, c) 這個 method 的時後,他發現  $icon 沒有 value 所以執行不下去了。

給他一個預設值吧。例如:

程式碼:
function ArticleCategory( $name, $url, $blogId, $inMainPage,$description = "", $numArticles = 0, $properties = Array(), $id = -1, $lastModification=null, $parentId = null,$icon = 'default.png' )

Mark


主題: Re: 为分类加上图标的问题
作者: nanguaxp五月 19, 2006, 07:58:39 上午
谢谢,回答的很详细. :-D :-D


主題: Re: 为分类加上图标的问题
作者: nanguaxp五月 19, 2006, 08:09:39 上午
现在构造分类对象的时候,多加了两个参数就行了。原来是少了这两个参数,操成不匹配。


程式碼:
        function _fillCategoryInformation( $query_result )
        {
        $category = new ArticleCategory( $query_result["name"],
                                             $query_result["url"],
                                             $query_result["blog_id"],
                                             $query_result["in_main_page"],
$query_result["description"],
                                             $query_result["num_articles"],
unserialize($query_result["properties"]),
                                             $query_result["id"],
                                                     
null,null,
//这里新加的图标信息
$query_result["icon"]
);