1

CakePHP アプリでインプレース編集をセットアップしましたが、1 つの問題を除いて、かなりうまく機能します。データがデータベースに正常に送信されると、戻り値には「admin.ctp」レイアウト全体が含まれます。私はいくつかのことを試みましたが、成功しませんでした$this->autoRender = false$this->layout = 'ajax'以下の私のコードをしてください:

jQueryコード

$('.setting_value').editable('/settings/ajax_edit',{
     id        : 'data[Setting][id]',
     name      : 'data[Setting][value]',
     select: true,
     type      : 'text',
     cancel    : 'Cancel',
     submit    : 'Save',
     tooltip   : 'Click to edit the title',
     indicator: '<img src="/img/admin/ajax-loader.gif">'
});

マイコントローラー機能

public function ajax_edit(){
    // $this->autoRender = false; // this doesnt seem to work
    // $this->layout = 'ajax' // this does not work as well

    if ($this->request->data) {
        $this->Setting->id = $this->request->data['Setting']['id'];
        $this->Setting->saveField('value', $this->request->data['Setting']['value']);
        $this->set('newvalue', $this->request->data['Setting']['value']);
    }
}

繰り返しますが、すべてがうまく機能しますが、変更された値が返される場合です。

4

1 に答える 1

2

いろいろ試した結果、理解できました。したがって、次のように関数を更新しました。

public function ajax_edit(){
    $this->autoRender = false;

    if ($this->request->data) {
        $this->Setting->id = $this->request->data['Setting']['id'];
        $this->Setting->saveField('value', $this->request->data['Setting']['value']);
        return $this->request->data['Setting']['value'];
    }
}

基本的に、ビュー ファイルを使用して表示する代わりに、autoRender=false を設定して新しい値を返す必要がありました。希望どおりに動作するようになりました。

于 2013-01-14T22:49:16.333 に答える