プロフィール項目の識別名にop_preset_は使えません 『正しくありません。』

OpenPNEのプロフィール項目を追加する際の識別名にop_preset_から始まるものは使えません。
このとき『正しくありません。』というエラーが出ますが、何が正しくないのか詳細がわからないため戸惑う人も多いようです。

op_preset_
とは、
OpenPNEのプリセット項目=前もってセットされた初期値
です。
このためカスタマイズによる追加の項目にこの名称を使用することはできません。


またop_preset_の項目を削除することはできますが、削除された同じ識別名を登録することはできません。

識別名項目名初期に投入される
op_preset_sex性別
op_preset_birthday誕生日
op_preset_region都道府県
op_preset_self_introduction自己紹介
op_preset_country国または地域×
op_preset_postal_code郵便番号×
op_preset_telephone_number電話番号×

該当箇所

データベース

profileテーブルのnameカラム

カスタマイズの項目の項目名はprofile_translationテーブルで管理されていますが、プリセット項目は
/lib/config/config/preset_profile.yml
で管理されています。

また次のファイルで地域言語設定がされます。
/apps/api/i18n/messages.ja.xml
/apps/*/i18n/messages.ja.xml

初期に投入される項目は次のymlに記載されています。
/data/fixtures/001_import_profile.yml

country、postal_code、telephone_numberの3項目はここに含まれていないため、インストール時には含まれません。

コード

/lib/form/doctrine/ProfileForm.class.php 118行目

  static public function validateName($validator, $values)
  {
    if (0 === strpos($values['name'], 'op_preset_'))
    {
      throw new sfValidatorError($validator, 'invalid');
    }

    return $values;
  }

/lib/model/doctrine/Profile.class.php 82行目

 /**
  * Checks if the profile is preset.
  *
  * @return boolean
  */
  public function isPreset()
  {
    return (0 === strpos($this->getName(), 'op_preset_'));
  }

関連記事

スポンサーリンク

Zend Frameworkのデータベース接続

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る