index.php
require_once('function.php');
require_once('config.php');
//对smarty初始化
$view=ORG('Smarty/','Smarty',$viewconfig);
//设置允许的控制器名和方法名数组
$controllerAllow=array('test','index');
$methodAllow=array('test','index','show');
//in_array函数作用:判断一下这个字符串是否存在于字符串里
$controller=in_array($_GET['controller'],$controllerAllow)?daddslashes($_GET['controller']):'index';
$method=in_array($_GET['method'],$methodAllow)?daddslashes($_GET['method']):'index';
C($controller,$method);
testController
class testController{
function show(){
global $view;
$testModel = M('test');
$data=$testModel->get();
var_dump($view);
$view->assign('str','哈哈哈');
$view->display('test.tpl');
}
}
提示出错:Call to a member function assign() on a non-object
说的是你调用成员方法assign()的这个$view不是一个对象!
$view是从function.php实例化smarty类返回的对象,
好吧,困扰了这么久突然解决了,是function.php,前面好像是照着老师的视频抄代码,在function里多调用了一次大C函数,所以导致了两个输出结果,还有是在Smarty实例函数之前调用,所以后面的global没有生效。
问题解决了吗?我也遇到了这个问题,在控制器里global的$view变量是null的,但是在入口文件index.php里实例化的smarty对象是有效的。
说明你实例化Smarty的时候有问题