web-dev-qa-db-ja.com

エラーメッセージ「不正な選択が検出されました。サイト管理者に連絡してください。」を変更します。

ユーザーが分類法選択フィールドのあるコンテンツを送信し、[〜#〜] not [〜#〜]で選択すると、参照エラーが表示されます。

これで、メッセージがいつ、どのように、どこに表示されるかを正確に把握でき、ユーザーにとって実際に役立つように変更できます(つまり、「カテゴリを選択しませんでした。」)。ユーザーを恐怖に陥れる可能性はありますか?

4
Peter

ノードにカスタム検証を追加して、出力を取得するエラーメッセージを制御できるようにします。その良い例があります この質問では 。これに関する潜在的な問題は、あなたがmayで両方のエラーメッセージを受け取ることです。私はすぐにそれに対処する方法についての提案はありません。

1
Letharion

これは、レサリオンの答えに追加することです。同じ原理を使用して、バリデーターで置き換えるエラーメッセージを確認することもできます。

function MY_MODULE_form_validate($form, &$form_state){
    $errors = drupal_get_messages(); // (dpm()'s has to go AFTER this line--they get cleared)
    foreach ($errors as $type => $id) {
        foreach ($id as $message){
            // Loop through individual messages, looking for ones to remove or replace
            if (test_for_invalid_error($message)===FALSE){
                drupal_set_message($message,$type);
            } elseif (test_for_invalid_error($message)!==TRUE){
                drupal_set_message(test_for_invalid_error($message), $type);
            }
        }
    }
}

function test_for_invalid_error($message){
    if (strpos($message, 'An illegal choice has been detected. Please contact the site administrator.') !== false) {
        return t('Please select a category!');
    }
    return FALSE;
}

これにより、独自のカスタムエラーが追加されるだけでなく、「不正な選択」エラーが置き換えられます。すっきりしていませんか?わーい!

6
Peter

モジュール String Overrides があなたの最善の解決策になります。文字列を好きなように変更するだけです。

1
witchcraft