0

所以我有一个使用 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 对象转换为扩展 ActiveRecord 的 Blob 类。现在的问题是,由于我在将对象发送到前端之前剥离了 ActiveRecord 辅助属性......当我去后端的 update() 时,由于缺少这些属性,它显然无法正确保存它.

所以我的问题是……有什么东西可以帮助这个过程吗?我的基本目标是将最小的 Blob 类发送到前端(没有 ActiveRecord 属性),然后在保存时以某种方式执行一些后端魔术,以将准系统 Blob 类重新关联回其 ActiveRecord 版本,以便它可以保存自己。我不介意研究新的 ORM 库......

谢谢!瑞安

4

1 回答 1

1

我不确定你是如何实现这一点的。所以这里有一个例子,你将如何实现这样的东西。

<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);
}

新闻模型.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);
}
于 2013-03-22T19:40:57.897 回答