0

私は非常に単純なロジックフックを持っています-私はまだ学んでいて、最初は混乱しています。開発者モードをオンにします。

連絡先モジュールにすでにフィールド「FIRST_NAME」があります。COntactsモジュールにもフィールド「MY_FIELD」を作成しました。

logic_hooks.phpファイルに追加しました

$hook_array['before_save'] = Array();
$hook_array['before_save'][] = Array(1, 'Value from one field to another', 'custom/modules/Contacts/my.php', 'User_hook','copy'); 

my.phpファイルに追加しました

class User_hook {

    function copy(&$bean, $event, $arguments)
    {

    $bean->my_field_c  = $bean->fetched_row['first_name']. " - additional text";
    }

}

したがって、First_Nameの値「First」を入力すると、フィールドの値「-additional text」が表示されますが、「First-additionaltext」を取得する必要があります。[ビューの編集]に移動して[名]フィールドに「Second」と入力すると、フィールドの値「First-追加のテキスト」が表示されますが、「Second-追加のテキスト」が表示されます。編集ビュー「Third」を有効にすると、「Third-additional text」フィールドに表示されますが、「Third-additionaltext」が表示されます。

したがって、明らかに私のロジックフックは1回の反復で遅延して実行されます-なぜ、どのように変更するのですか?これは私の最初のフックなので、私はそれほど経験がありません。手伝ってくれてありがとう

4

1 に答える 1

5

$ bean-> fetched_row ['first_name']は、変更する前にフィールドの値を返します。これを使用して、ユーザーがフォームで変更する前のfirst_nameの値を確認します。

使ってみてください

class User_hook {

    function copy(&$bean, $event, $arguments)
    {

    $bean->my_field_c  = $bean->first_name. " - additional text";
    }

}    
于 2013-01-29T14:56:10.970 に答える