ページ属性を取得したフォームを作成したい

2018年6月5日 at 13:39

似たようなトピックはあったのですが、tomoacフォームが5.6までの対応だったのでv8について質問させてください。

イベント申込のフォームを何で作るか
http://concrete5-japan.org/community/forums/chat/post-8780/



具体的な例としては、商品のページに金額や商品情報の属性を付与していて、金額などの情報をフォームに適用して、簡易的なECのオーダーのような動きを実現したいと考えています(決済はしないので選択した商品の属性情報だけが送信されるような動き)。

v8で動くアドオン自体が少ないので、そのような機能は自分で作成するしかないと思うのですが、
1. 外部フォームでページ属性の取得は可能かどうか
2. デフォルトのフォームブロックのカスタムテンプレートで実装可能かどうか
3. エクスプレスでなんとかなるのかどうか(エクスプレスがどういう機能かわかっていないです…)
上記のような判断ができず困っています。

参考になるような記事などありましたらお教えいただけますでしょうか
よろしくお願いします。

タグ:

Re: ページ属性を取得したフォームを作成したい

2018年6月8日 at 11:20
僕が作るなら、外部フォームにしたいです。

外部フォームでページ属性の取得は可能です。

$c = Page::getCurrentPage();
$attr = $c->getAttribute('ページ属性ハンドル'); //属性の取得方法はタイプによって変わります。
<input type="hidden" name="sample" value="<?php echo $attr?>" />

こんな感じで埋め込めます。

ページ属性の取得はどのブロックでも可能ですが、レガシーフォームとエクスプレスフォームは構造が複雑なので、カスタムテンプレートは少しややこしいと思います。
 

Re: ページ属性を取得したフォームを作成したい

2018年6月8日 at 12:41
ご返信ありがとうございます。

外部フォームでちょっと試行錯誤してみます。


今気づいたのですが、質問の仕方が悪かったと思っていて、
フォームの中に、ページリストを使ってページリストのページ属性を使いたいというのが主旨でした。(添付参照)
申し訳ありません。
 

Re: ページ属性を取得したフォームを作成したい

2018年6月8日 at 13:46
はい、可能です。

こちらのURLが参考になると思います。
http://concrete5-japan.org/help/5-7/developer/working-with-pages/searching-and-sorting-with-the-pagelist-object/


参考コードです
controller側の処理

$list = new PageList();
$list->filterByPageTypeHandle('blog_entry'); //ページタイプで絞り込みする場合
$pages = $list->getResults();


view側の処理

foreach($pages as $page){
 echo $page->getAttribute('属性ハンドル'); //ページ属性表示処理
}
 

Re: ページ属性を取得したフォームを作成したい

2018年6月8日 at 14:23
ありがとうございます!やってみます!!