0

したがって、基本的なデータ オブジェクトを管理するためのネイティブ ActiveRecord を備えた CodeIgniter を使用するバックエンドがあります。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ライブラリを研究してもかまいません...

ありがとう!ライアン

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>

controller.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);
}
于 2013-03-22T19:40:57.897 に答える