请教:3.1版SP框架 问题

#1 typeng2001

Fatal error: Uncaught exception 'SmartyException' with message 'Plugin "spUrl" not callable' in /var/www/html/speedphp/Drivers/Smarty/sysplugins/smarty_internal_templatebase.php:428Stack trace:0 /var/www/html/speedphp/Core/spController.php(123): Smarty_Internal_TemplateBase->registerPlugin('function', 'spUrl', '__template_spUr...')1 /var/www/html/controller/main.php(7): spController->display('test.html')2 /var/www/html/speedphp/spFunctions.php(21): main->index()3 /var/www/html/index.php(18): spRun()4 {main}  thrown in /var/www/html/speedphp/Drivers/Smarty/sysplugins/smarty_internal_templatebase.php on line 428

2016-08-07 17:01:43

#2 jake

可能的原因是:
1. 框架文件不全
2. smarty被换了

建议在我们的GITHUB库上面下载完整的框架源码。

2016-08-08 08:41:01

#3 typeng2001

谢谢!重新下载也是相同错误。

框架源码是从GITHUB库上面下载的。
我的系统是:Linux cento65 2.6.32-431.el6.x86_64 1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
是自己选择安装最小的LAMP.是否是系统缺少什么文件?

2016-08-09 17:51:41

#4 typeng2001

typeng2001 发表于 2016-8-9 17:51
谢谢!重新下载也是相同错误。

框架源码是从GITHUB库上面下载的。
能否提供另外版本测试?

2016-08-09 18:00:25

#5 jake

Uncaught exception 'SmartyException' with message 'Plugin "spUrl" not callable'

这里的提示是无法载入spUrl插件,可能性有两个:

1. 缺少文件
2. 载入spUrl的代码被修改了(这个可能性比较大,估计你的程序是已经被写好的)

建议是直接试试入门教程里面的例子在环境下的运行,不修改任何的代码。

2016-08-10 08:41:54

#6 typeng2001

jake 发表于 2016-8-10 08:41
Uncaught exception 'SmartyException' with message 'Plugin "spUrl" not callable'

这里的提示是无法载 ...
谢谢jake的耐心答复!
我完成输入留言本程序,已通过数据库连接,运行时出现如下错误,请问如何解决?
Notice: Undefined property: Smarty::$engine in /var/www/html/speedphp/Drivers/Smarty/Smarty.class.php on line 671 Fatal error: Call to a member function assign() on a non-object in /var/www/html/speedphp/Core/spController.php on line

2016-08-10 17:09:06

#7 jake

Smarty对象没实例化,它是在spController的构造函数里面进行实例化的。

你需要检查是不是子类覆盖了spController的构造函数,使得没有实例化smarty了。

2016-08-10 17:16:35

#8 typeng2001

我完完整完使用入门教程里面的例子,没有任何修改,就是无法通过。
谢谢!

2016-08-10 17:46:04

#9 jake

typeng2001 发表于 2016-8-10 17:46
我完完整完使用入门教程里面的例子,没有任何修改,就是无法通过。
谢谢! ...
我这里只是按上面的错误提示来解释的。

一般正常来说,PHP的错误提示是出现错误才会提示的,如果没有错误,PHP是不会提示错误的。

所以出现错误,就要找原因,而不是证明你正确。

原因的可能性已经给你分析了。

另外,如果认为是框架本身的问题,开源代码请随时指出那行的问题,我们会积极改进的,谢谢。

2016-08-10 18:21:43

#10 gxnnhuzz

尝试过换回旧版的smarty也不行,以前的smarty是3.0.8,配合3.1.89版的spController也可以用,但是在最新的3.1框架换3.0.8的smarty也不行,更诡异的时把smarty克隆出来发现竟然没有3.0.x的版本,从2.6直接跳到3.1,而且3.1.X以后直接多了一个smartyBC,不知道干什么用的,我觉得jake 有必要亲自测试一下为什么smarty没有实例化成功

2016-10-23 15:35:44

#11 粽叶飘香

我也遇到了同样的问题
class Main extends spController{
        public function index(){
                $this->display('index.html');
        }
}

模板



       


       

Hello SpeedPHP!





报错
Fatal error: Uncaught exception 'SmartyException' with message 'Plugin "spUrl" not callable' in E:\WWW\sp\SpeedPHP\Drivers\Smarty\sysplugins\smarty_internal_templatebase.php:428 Stack trace: 0 E:\WWW\sp\SpeedPHP\Core\spController.php(123): Smarty_Internal_TemplateBase->registerPlugin('function', 'spUrl', '__template_spUr...') 1 E:\WWW\sp\controller\main.php(4): spController->display('index.html') 2 E:\WWW\sp\SpeedPHP\spFunctions.php(21): Main->index() 3 E:\WWW\sp\index.php(8): spRun() 4 {main} thrown in E:\WWW\sp\SpeedPHP\Drivers\Smarty\sysplugins\smarty_internal_templatebase.php on line 428

2016-11-16 19:05:18

#12 jake

首先,看看报错的提示(如果看不懂建议google翻译)大致的意思是调用”spUrl“这个模板函数的时候,无法执行。(Plugin "spUrl" not callable)。

楼上的代码就有问题了,模板看起来是没有spUrl的,那么为什么会提示调用这个失败呢?没有整个代码看到我不敢说什么,建议楼上查找一下或者检查一下自己的代码先。

另外,假设模板里面有spUrl,如楼主的情况,那么应该是https://github.com/SpeedPHP/speedphp/blob/master/Core/spView.phpL37 这行代码没被执行,因为这行是注册spUrl以便在模板内使用的,模板引擎提示调用失败,那就是没有注册,所以楼主需要检查为什么那行代码没执行,正常一般都会执行的,除非修改了很多东西,对吧。

2016-11-16 21:54:25

#13 粽叶飘香

jake 发表于 2016-11-16 21:54
首先,看看报错的提示(如果看不懂建议google翻译)大致的意思是调用”spUrl“这个模板函数的时候,无法执 ...
感谢老大回复。
以前用这个框架开发了几们项目,用起来感觉很舒服,因为小巧。这次不知道为什么直接下载的代码。就运行不起来。报错信息看得懂,问题是我什么都没改过,最简单的一个Controller,最简单的一个View,直接报错。怀疑是环境的问题。但项目时间紧张所以也没有时间去查,后来还是用CI做了那个项目。

2017-01-07 20:54:21