0

フォームから送信されたデータを保存しています。

コントローラーで私がやっている:

$this->User->create();
$this->User->save($this->request->data)

$this->request->data は次のようになります。

'User' => array(
    'password' => '*****',
    'username' => 'ddddd',
    'role' => '256/aa01bdf80d42beb48dd3225acddf447fdd7a39f3',
    'parent_id' => '0/b6ba9bd57f6c70cf738891d4c6fac22abed4161d'
)

'role' と 'parent_id' で機能する検証ルールがあり、ロール/親 ID がユーザーがアクセスできる ID の中に含まれていることを確認します。

データが有効な場合、検証によってフィールド値が変更されます。

ビヘイビアーの beforeSave() フィルターでいくつかのツリー フィールドを設定する Tree ビヘイビアーもあります。

$this->data->[$model][$field]検証ルールは、以下に示すように変更を書き込みます。

public function checkListHash($check, $field) {
    $explodedCheck = explode('/', $check[$field]);
    if ($this->secureId($explodedCheck[0], $explodedCheck[1])) {
        $this->data['User'][$field] = $explodedCheck[0];
        return true;
    }
    return false;
}

動作の beforeFilter() は、次のようなステートメントでデータ配列を変更しています。

$Model->data[$Model->alias][$ancestors] = $ancestorList;

検証と beforeFilter() 処理が完了すると、$this->User->data次のような美しく正しいデータ配列が得られます。

'User' => array(
    'password' => '*****',
    'active' => '0',
    'role' => '256',
    'parent_id' => '0',
    'node' => '0',
    'username' => 'ddddd',
    'modified' => '2013-09-15 09:55:02',
    'created' => '2013-09-15 09:55:02',
    'ancestor_list' => ',0,'
)

ただし、$this->request->data変わらない。そして、それが救われていることです。

明らかに、データにアクセスするためのこれらのさまざまな方法の関係を理解し​​ていません。3 つのコンテキストでデータに対処するために、さまざまな方法を試しました。

  • コントローラ
  • モデル
  • 行動

$this->User->create($this->request->data);そして、Controller save() ステートメントの前に試しました。

コントローラーでは、利用可能なデータ配列として私が見ているもの:

  • 保存する前に
  • $this->request->data = $this->data = フォームからの適切なデータ
  • $this->User->data = いくつかのデフォルトの未入力の配列

  • $this->User->create($this->request->data) を使用する場合の保存前

  • 3 つの配列すべてに生のフォーム データが含まれています

  • いずれの場合も保存後

  • $this->request->data = $this->data = 前とまったく同じ
  • $this->User->data = 適切にマッサージされたデータ

誰か私を整理できますか?

ドン・ドレイク

4

1 に答える 1