论坛注册
登录
论坛
手册
开发教程
框架下载
网站首页
私人消息 (0)
公共消息 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
SpeedPHP技术交流论坛
»
求助问答
» 能不能在controller对象的构造函数里设定一个smarty对象的属性
1
2
下一页
返回列表
发帖
stalker
发短消息
加为好友
stalker
UID
247
帖子
22
精华
2
积分
20
阅读权限
1
在线时间
8 小时
注册时间
2010-2-22
最后登录
2010-6-4
游客
1
#
跳转到
»
倒序看帖
打印
字体大小:
t
T
发表于 2010-3-10 11:20
|
只看该作者
能不能在controller对象的构造函数里设定一个smarty对象的属性
class main extends spController{
//需要一个smarty对象的style属性
public function index(){
$this->display($this->style.'/'.$__controller.'/'.$__action.'.html');
}
}
复制代码
jake
发短消息
加为好友
jake
UID
1
帖子
1190
精华
10
积分
100
阅读权限
150
在线时间
243 小时
注册时间
2009-12-23
最后登录
2010-9-10
超级版主
2
#
发表于 2010-3-10 11:28
|
只看该作者
构造函数是__construct,如果需要在控制器的构造函数里面获取smarty对象并进行操作,可以用$this->getView()来获取。
TOP
stalker
发短消息
加为好友
stalker
UID
247
帖子
22
精华
2
积分
20
阅读权限
1
在线时间
8 小时
注册时间
2010-2-22
最后登录
2010-6-4
游客
3
#
发表于 2010-3-10 16:06
|
只看该作者
public function main extends spController{
public function __construct(){
$smarty = $this->getView();
$smarty->style = 'blue';
}
}
复制代码
提示:
Fatal error
: Call to a member function getView() on a non-object
TOP
jake
发短消息
加为好友
jake
UID
1
帖子
1190
精华
10
积分
100
阅读权限
150
在线时间
243 小时
注册时间
2009-12-23
最后登录
2010-9-10
超级版主
4
#
发表于 2010-3-10 16:33
|
只看该作者
要注意,在使用控制器或者模型类的构造函数,一定要加上parent::__construct();
public function main extends spController{
public function __construct(){
parent::__construct();
$smarty = $this->getView();
$smarty->style = 'blue';
}
}
参见微博实例的general控制器的构造函数
TOP
stalker
发短消息
加为好友
stalker
UID
247
帖子
22
精华
2
积分
20
阅读权限
1
在线时间
8 小时
注册时间
2010-2-22
最后登录
2010-6-4
游客
5
#
发表于 2010-3-11 09:48
|
只看该作者
对OO了解不够深刻 构造函数不是在实例化类的时候就会执行的吗 怎么还要在函数中调用一下自身?
另外这样在别的函数中还是无法调用该属性
class main extends spController{
public function __construct(){
parent::__construct();
$smarty = $this->getView();
$smarty->style = 'blue';
}
public function index(){
echo $this->style;
}
}
复制代码
TOP
stalker
发短消息
加为好友
stalker
UID
247
帖子
22
精华
2
积分
20
阅读权限
1
在线时间
8 小时
注册时间
2010-2-22
最后登录
2010-6-4
游客
6
#
发表于 2010-3-11 10:22
|
只看该作者
哦 明白了 parent代表的是spController对象 但为什么还是输出不了呢?
TOP
jake
发短消息
加为好友
jake
UID
1
帖子
1190
精华
10
积分
100
阅读权限
150
在线时间
243 小时
注册时间
2009-12-23
最后登录
2010-9-10
超级版主
7
#
发表于 2010-3-11 10:30
|
只看该作者
$smarty->style = 'blue';
这是什么?smarty对象没有style这个成员变量吧?你要用$this->style
TOP
stalker
发短消息
加为好友
stalker
UID
247
帖子
22
精华
2
积分
20
阅读权限
1
在线时间
8 小时
注册时间
2010-2-22
最后登录
2010-6-4
游客
8
#
发表于 2010-3-11 10:56
|
只看该作者
class main extends spController{
public function __construct(){
parent::__construct();
$this->style = 'blue';
}
public function index(){
echo $this->style;
}
}
复制代码
还是不行
TOP
stalker
发短消息
加为好友
stalker
UID
247
帖子
22
精华
2
积分
20
阅读权限
1
在线时间
8 小时
注册时间
2010-2-22
最后登录
2010-6-4
游客
9
#
发表于 2010-3-11 10:59
|
只看该作者
class main extends spController{
public $style = '';
public function __construct(){ parent::__construct();
$this->style = 'blue';
}
public function index(){
$this->display($this->style.'/'.$__controller.'/'.$__action.'.html');
}
}
复制代码
这样可以了 但是在模板文件中使用变量没办法显示:
<{$style}>
输出为空
TOP
jake
发短消息
加为好友
jake
UID
1
帖子
1190
精华
10
积分
100
阅读权限
150
在线时间
243 小时
注册时间
2009-12-23
最后登录
2010-9-10
超级版主
10
#
发表于 2010-3-12 11:01
|
只看该作者
这样可以了 但是在模板文件中使用变量没办法显示:
输出为空
stalker 发表于 2010-3-11 10:59
可以参考一下winblog微博实例的geranel控制器,里面有非常多的模板变量的辅助之类的操作,很有参考价值。
TOP
1
2
下一页
返回列表
顶置区
求助问答
框架技术交流区
开发交流
扩展代码分享
意见建议及问题反馈
SpeedPHP与UML系统分析与设计
站务区
论坛站务
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]
长期征集,基于SpeedPHP框架的程序
关注最新信息,SpeedPHP官方微博
尝鲜,SpeedPHP框架最新测试版下载
一次的点击,将带给多一个贫困儿童健康