1

私のアプリケーションでは、セキュリティコンポーネントを使用しており、このようにアプリコントローラーで定義されています

public $components = array('Security');

そして、私はこのようなフォームを作成しました

<?php
    echo $this->Form->create('Admin', array('id' => 'form',"url"=>array("plugin"=>"admins","controller"=>"admins","action"=>"save","admin"=>true)));
    echo $this->Form->hidden("submit_type",array("id" => "id_submit_type","value" => ""));
    echo $this->Form->input("username");
    echo $this->Form->input("password");
    echo $this->Form->button(__('Save'),array("id" => "save","class" => "form-button"));
    echo $this->Form->button(__('Save & Cont'),array("id" => "savec","class" => "form-button"));
    echo $this->Form->end();
?>

そしてJavascriptでは、このように隠しフィールドの値を更新しています

<script type="text/javascript">
    $(document).ready(function() 
    {
        $('#save, #savec').click(function() {

            if($(this).is('#save'))
                $('#id_submit_type').val("S");
            else
                $('#id_submit_type').val("C");
            $('#form').submit();
        });


    });
 </script>

保存ボタンをクリックした後

CORE/Cake/Controller/Component/SecurityComponent.php line 234 → SecurityComponent->blackHole(AdminsController, string)
[internal function] → SecurityComponent->startup(AdminsController)
CORE/Cake/Utility/ObjectCollection.php line 131 → call_user_func_array(array, array)
[internal function] → ObjectCollection->trigger(CakeEvent)
CORE/Cake/Event/CakeEventManager.php line 247 → call_user_func(array, CakeEvent)
CORE/Cake/Controller/Controller.php line 670 → CakeEventManager->dispatch(CakeEvent)
CORE/Cake/Routing/Dispatcher.php line 183 → Controller->startupProcess()
CORE/Cake/Routing/Dispatcher.php line 161 → Dispatcher->_invoke(AdminsController, CakeRequest, CakeResponse)
APP/webroot/index.php line 97 → Dispatcher->dispatch(CakeRequest, CakeResponse)

javascript の非表示フィールドを更新するためにコメントしている場合

私の機能は正常に機能しており、データをテーブルに保存しています

セキュリティ コンポーネントを使用しているときに、隠し変数の値を JavaScript で設定する方法を教えてください。

4

1 に答える 1

1

このようにしてみてください。それが正しい解決策であるかどうかはわかりませんが、私にとっては適切に機能しています。あなたの beforeFilter 関数に以下のコードを書いてください

$this->Security->disabledFields = array('hiddenfield1', 'hiddenfield2'); // set the hidden fields like this
function beforeFilter() {
       $this->Security->disabledFields = array('submit_type');  // for your code
}
于 2013-09-23T08:39:04.603 に答える