【发布时间】:2013-05-03 17:27:48
【问题描述】:
尝试在 drupal 7 中声明一个简单函数时遇到一个奇怪的错误。我在模板文件的顶部声明了一个函数(我知道,通常是不,但我需要快速获取这些模板,现在没有时间为这些功能开发模块。)所以我在文件顶部声明以下内容:
1. function templateB_EventRegistrationNode($params = NULL) {
2. /* code */
3. }
但是,当我尝试运行模板时,出现以下错误,
致命错误:无法重新声明 templateB_EventRegistrationNode() (之前在 C:\wamp\www\vsi\sites\all\themes\vsi_new_template_b\templates\node.tpl.php:1) 在 C:\wamp\www\vsi\sites\all\themes\vsi_new_template_b\templates\node.tpl.php 在第 3 行
(已更改行号以匹配示例。)
有人知道为什么第一行与函数的最后一行冲突吗?顺便说一句,具有不同名称的函数的副本在另一个模板中工作,因此代码是有效的。
【问题讨论】:
-
可能是因为模板文件可以包含多次,第二次包含导致错误。
-
行号是无关紧要的(就像你的例子一样)。这是函数重新声明的问题。至少将延迟定义包装在
if (!function_exists("...")) {中。 -
太棒了,谢谢大家,这为我指明了正确的方向。