所以我有一个使用 CodeIgniter 的后端,及其本机 ActiveRecord 来管理我的基本数据对象。 ActiveRecord 类添加了一些字段来帮助它确定如何关联对象(即“_class_name”、“_table”、“_columns”)。当我将这些对象发送到前端时,这些字段都包含在内。我不想这样,所以我创建了一个清理函数,在将它们发送到前端之前取消它们的设置。
现在,当我在前端时,Angular 正在管理我的所有资源,我去对 $resource 调用 $save() ,它将 json 对象发送到后端。然后在后端我将这个 json 转换为一个对象:
$blob = unserialize(sprintf(
'O:%d:"%s"%s',
strlen('Blob'),
'Blob',
strstr(strstr(serialize($blob), '"'), ':')));
这会将 json 对象转换为 Blob 类,该类扩展了 ActiveRecord。现在的问题是,由于我在将对象发送到前端之前删除了 ActiveRecord 辅助属性...当我在后端调用 update() 时,由于缺少这些属性,它显然无法正确保存它.
所以我的问题是...是否存在可以帮助完成此过程的东西? 我的基本目标是将最小的 Blob 类发送到前端(没有 ActiveRecord 属性),然后在保存时以某种方式执行一些后端魔法,将准系统 Blob 类重新关联回其 ActiveRecord 版本,以便它可以保存自身。 我不介意研究新的 ORM 库...
谢谢! 瑞安
我不确定你是如何实现这一点的。这里有一个关于如何实现这样的事情的示例。
<div class="span2" ng-controller="NewStoryCtrl">
<h4>New Story</h4>
<form name="newStory">
<label for="title">Title: </label>
<input type="text" name ="title" ng-model="news.title" required>
<label for="text">Text: </label>
<textarea type="text" name="text" ng-model="news.text"required></textarea>
<button ng-click="createNews()">Submit</button>
</form>
控制器.js
function NewStoryCtrl($scope, $http) {
$scope.news = {title:$scope.title, text:$scope.text};
$scope.createNews = function(){
$http.post('/ci/index.php/news/create/',$scope.news);
};}
新闻.php
public function create() {
$data = json_decode(file_get_contents('php://input'), TRUE);
$this->news_model->set_news($data);
}
newsModel.php
public function set_news($data) {
$this->load->helper('url');
$slug = url_title($data['title'], 'dash', TRUE);
$retval = array(
'title' => $data['title'],
'slug' => $slug,
'time' => time(),
'text' => $data['text']
);
return $this->db->insert('news', $retval);
}