新規ユーザー登録のオプションを属性セット毎に出力したい

2015年3月12日 at 12:14

現在、追加したユーザー属性をセットで管理しています。

属性の数が多いため、
新規ユーザー登録の際にデフォルトのままだとオプション側が長くなってしまうので、
グループ分けもかねて、一部セットをユーザー詳細の下に出力したいと考えています。

何か方法はございますでしょうか?

調べていたところ、本家フォーラムのこちら
http://www.concrete5.org/community/forums/usage/show-set-names-on-registration-forms/
と同様のことがしたいのだと思っています。

バージョンは5.6.3.2です。

よろしくお願いいたします。

タグ:

Re: 新規ユーザー登録のオプションを属性セット毎に出力したい

2015年3月12日 at 12:53
$category = AttributeKeyCategory::getByHandle('user');
if (is_object($category) && $category->allowAttributeSets()) {
$sets = $category->getAttributeSets();
foreach($sets as $as) {
?>
<h3><? echo $as->getAttributeSetDisplayName()?></h3>
<?php
$attribs = $as->getAttributeKeys();
if (count($attribs) > 0) {
$af = Loader::helper('form/attribute');
foreach($attribs as $ak) {
echo $af->display($ak, $ak->isAttributeKeyRequiredOnRegister());
}
}
}
}
 

Re: 新規ユーザー登録のオプションを属性セット毎に出力したい

2015年3月12日 at 13:21
ありがとうございます!

セット名のハンドルなどで指定したセットを出すことは可能でしょうか?
 

Re: 新規ユーザー登録のオプションを属性セット毎に出力したい

2015年3月12日 at 13:27
AttributeSet::getByHandle があるよ

http://www.concrete5.org/api-legacy/Concrete5_Model_AttributeSet.html
 

Re: 新規ユーザー登録のオプションを属性セット毎に出力したい

2015年3月12日 at 17:03
【編集しました】
AttributeSet::getByHandleを使って表示はできるようになりました。

$as = AttributeSet::getByHandle('ハンドル名');
if (is_object($as)) { ?>
<h3><? echo $as->getAttributeSetDisplayName()?></h3>
<?php
$attribs = $as->getAttributeKeys();
if (count($attribs) > 0) {
$af = Loader::helper('form/attribute');
foreach($attribs as $ak) {
echo $af->display($ak, $ak->isAttributeKeyRequiredOnRegister());
}
}
}

ですが、設定にある「ユーザー登録フォームに表示」のチェックに関わらず表示されてしまいます。
チェックを入れてあるものだけを表示するにはどうしたらよいでしょうか。
 

Re: 新規ユーザー登録のオプションを属性セット毎に出力したい

2015年3月12日 at 18:42
こうですね。属性関連のモデルを読めば、一通り使い方が分かると思いますよ。まあ、属性周りと権限周りは、抽象化されていて理解するのが大変ではありますが…。

$as = AttributeSet::getByHandle('personal_information');
$attribs = $as->getAttributeKeys();
if (count($attribs) > 0) {
$af = Loader::helper('form/attribute');
foreach($attribs as $ak) {
if ($ak->isAttributeKeyEditableOnRegister() && $ak->isAttributeKeyActive()) {
echo $af->display($ak, $ak->isAttributeKeyRequiredOnRegister());
}
}
}
 

Re: 新規ユーザー登録のオプションを属性セット毎に出力したい

2015年3月12日 at 19:26
無事にできました!
ありがとうございます!!

いろいろ読んで頑張ります。
 

Re: 新規ユーザー登録のオプションを属性セット毎に出力したい

2015年3月12日 at 19:35
ちなみに、concrete/single_pages/register.php に

$attribs = UserAttributeKey::getRegistrationList();

という記載があり、登録画面で表示する属性を取得しています。この UserAttributeKey クラスの getRegistrationList() メソッドの中身を読めば、先ほどの管理画面でチェックした属性だけを取得する方法が分かるはずです。がんばってください!