1

検索フィールドにアポストロフィが含まれていると、civicrm のオートコンプリート検索で結果が表示されません。コメントをいただければ幸いです。

4

2 に答える 2

1

これは civicrm の問題です " drupal_site\sites\all\modules\civicrm\CRM\Contact\Page\AJAX.php"

 static function autocomplete() {
    $fieldID       = CRM_Utils_Type::escape($_GET['cfid'], 'Integer');
    $optionGroupID = CRM_Utils_Type::escape($_GET['ogid'], 'Integer');
    $label         = CRM_Utils_Type::escape($_GET['s'], 'String');

    $selectOption = CRM_Core_BAO_CustomOption::valuesByID($fieldID, $optionGroupID);

    $completeList = NULL;
    foreach ($selectOption as $id => $value) {
      if (strtolower($label) == strtolower(substr($value, 0, strlen($label)))) {
        echo $completeList = "$value|$id\n";
      }
    }
    CRM_Utils_System::civiExit();
  }

エスケープ機能を削除する必要があります。

$label         = $_GET['s'];

私の問題を解決しました。

于 2014-08-21T15:45:31.467 に答える
0

addslashes();次のようにphpの関数を使用して配列に追加する前に、文字列をエスケープする必要があります。

PHP:

$str="this a string with ' ";
$str=addslashes($str);

JS:

var string_from_php=<?php echo $str; ?>

そしてそれはうまくいくはずです。コードからスニペットを追加して、オートコンプリートに移動する配列を作成する場合、私ははるかに役に立ちます

于 2014-08-21T15:37:19.050 に答える