我收到一个错误,我不知道如何解决,所以我想知道我是否能得到一些帮助.
这是错误
Fatal error: process_form() [<a href='function.process-form'>function.process-form</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Template" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /home/twinmeddev/html/template_add.php on line 44
Run Code Online (Sandbox Code Playgroud)
我在process_form()函数中遇到此错误.所以我从中得到的是,它认为我没有为模板加载类.事实上,我在顶部做了什么.包含'inc/item.class.php'; 我是否必须在功能中重新包含它?
这是带有错误的特定页面的代码.你可以看到我拥有应有的一切.我哪里出错了?
<?php
include 'inc/prep.php';
include 'inc/header.class.php';
include 'inc/item.class.php';
include 'inc/template.class.php';
include 'inc/formhelper.class.php';
include 'inc/formvalidator.class.php';
include_once( 'inc/config/config.php' ) ;
include_once( …Run Code Online (Sandbox Code Playgroud) 可能重复:
我为什么要在PHP中使用模板系统?
我只是好奇有多少开发者真的这样做了?
到目前为止,我还没有,我只是好奇它是否真的有助于使事情看起来更清洁,更容易遵循.我听说像Smarty这样的模板引擎有帮助,但我也听到了相反的情况.他们只是创造了不必要的开销,而且就像学习一门新语言一样.
这里有人有模板经验吗?你对他们有什么感受?对大项目有帮助还是浪费时间?
在旁注:我工作的公司没有设计师,只有两个开发人员在这个项目上负责重新设计/升级.我也使用了一些AJAX,这会有模板引擎的问题吗?
好吧,我很困惑.我有一个存储在会话中的对象.我可以添加项目到这个对象.到目前为止很简单.我像这样初始化对象:
$template = new Template($mysqli);
$_SESSION['template'] = serialize($template);
Run Code Online (Sandbox Code Playgroud)
现在,这应该创建一个品牌打击新对象并将其分配给会话.然后我有一些代码通过AJAX请求添加项目.该代码如下:
$template = unserialize($_SESSION['template']);
$prodid = $_GET['product_id'];
$template->addItem($prodid);
echo var_dump($template->getItems());
$_SESSION['template'] = serialize($template);
Run Code Online (Sandbox Code Playgroud)
再说一遍,应该很简单.现在问题是,第一位代码没有重置$_SESSION['template'],所以我得到了迄今为止我添加的所有项目,重新加载页面并没有修复它.
我找到了导致恶作剧的文件,但我不知道我能做些什么.它是一个包含,它是网站不同部分运行所必需的.我正在为网站添加功能,如果我删除功能,我不认为所有者会讨厌.这是文件:
<?php
include_once( 'DBE.class.php' ) ;
################################################
# Function: Sessions_open
# Parameters: $path (string), $name (string)
# Returns: bool
# Description: This is an over-ride function call
# that we need to create so that the php internal
# session manager doesn't store our session in the
# file system, since we are storing it in …Run Code Online (Sandbox Code Playgroud) 我觉得我在用我的代码滥用DOM ...
for(var i=0; i<json.length; ++i){
var newobj = document.createElement("div");
var inner = "<img src='"+json[i].picture+"' alt='Item preview' class='icon' />";
inner += "<p>"+json[i].id+"<br />qty:"+json[i].qty;
inner += "<a href=\"javascript:clearProduct('"+json[i].id+"')\">";
inner += "<img alt='Seperator' src='images/form-sep.gif' />";
inner += "<img src='images/cross.png' alt='Remove this item.' title='Remove this item.' />";
inner += "</a></p>";
newobj.innerHTML = inner;
newobj.className = "cart_item";
$('cartitems').appendChild(newobj);
$('cartcount').innerHTML = json.length;
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?我的意思是,是的,我可以通过并为每个元素使用createElement并分别设置每个属性,但这看起来很简单.有没有更好的办法?
好吧,让我先举一个例子.我有很多项目,他们可以分为一系列类别.项目可以是多个类别.基本上我所拥有的是具有按类别分组的复选框的项目列表.同样,项目可以出现多次.所以它可能看起来像:
蓝色物品:第1项第2项第3项
红色物品:第1项第4项
因此,每个项目旁边都有一个复选框,用于删除项目类别关联.我应该在输入值中存储什么,以便区分不同类别的项目?我的意思是我不能使用项目编号,因为它可以出现在多个类别中.我可以做类似"blue-item2"之类的东西然后当我使用我的服务器端脚本通过表单分割值字符串" - ",但这似乎有点不确定.
对不起,如果问题有点模糊.如果需要,我可以澄清一点.