登録日
2014年6月23日

メンバー検索

  

take34

名前(ニックネーム)
anken
自分のconcrete5サイト
ホームページ
自己紹介
concrete5.org のユーザー名
concrete5 Slack Team ID
Twitterアカウント
フォーラム総投稿数
80

コミュニティバッジ

インテグレートパートナー concrete5 でサイト制作を行うことができるインテグレートパートナーです。お仕事で concrete5 サイトを構築している個人・企業の方であれば申請できます。詳しくはインテグレートパートナー紹介ページ

投稿

1から10までを表示 (計80)

Re: レガシーフォームを複数使用する場合のメールテンプレートについて

$this->surveyName

にフォームの名前が入ってくるようですので、

@$mh->sendMail();

より前の任意の場所で


if (($this->surveyName =="sampleform"){
//ここにsampleformだった場合の処理を書きます
}

のようにしてメールの属性等を設定してあげれば良いと思います。

Posted on 8月 18, 2021 at 6:50 午後

Re: コアファイルのオーバーライド方法について

お世話になっております。
395回週刊concrete5でもご回答いただきありがとうございました。

以下、2ファイルについて試してみましたが、
「Psr4ClassLoader が見つからない」というエラーになってしまいます。
何か設定が足りないでしょうか?
追加で情報あればご教示ください。よろしくお願いいたします。

▼Application/src/Form/Service/Widget/DateTime.php

namespace Application\Form\Service\Widget;

class DateTime
{

}


▼Application/bootstrap/autoload.php


defined('C5_EXECUTE') or die('Access Denied.');

/*
* ----------------------------------------------------------------------------
* Load all composer autoload items.
* ----------------------------------------------------------------------------
*/

$classLoader = new \Symfony\Component\ClassLoader\Psr4ClassLoader();
$classLoader->addPrefix('Application\\Form\\Service\\Widget', DIR_APPLICATION . '/' . DIRNAME_CLASSES . '/Form/Service/Widget');
$classLoader->register();



▼結果


Fatal error: Uncaught Error: Class 'Symfony\Component\ClassLoader\Psr4ClassLoader' not found in /home/****/****/public-html/***/application/bootstrap/autoload.php:13 Stack trace: #0
/home/****/****/public-html/***/concrete/bootstrap/autoload.php(10): include() #1
/home/****/****/public-html/***/concrete/dispatcher.php(29): require('/home/devbean/b...') #2
/home/****/****/public-html/***/index.php(3): require('/home/devbean/b...') #3 {main} thrown in
/home/****/****/public-html/***/application/bootstrap/autoload.php on line 13

Posted on 5月 29, 2021 at 5:32 午後

Re: Expressエンティティをページ属性として表示したい

hissyさん、ありがとうございます!

無事カスタムテンプレートで値を取得することが出来ました。


if (isset($entry) && is_object($entry)) {
$name = $entry->getName();
$department = $entry->getDepartment();
$memo = $entry ->getMemo();
$img = $entry ->getImages();
}


※Name、Department、Memo等はエンティティ名

エンティティ名で自動的にメソッドを作ってくれるんですね!(スゴイ。)

大変勉強になりました、ありがとうございました!

Posted on 5月 28, 2021 at 12:50 午後

Re: Expressエンティティをページ属性として表示したい

▼Expressエンティティをページ属性として表示

1)ページタイプの「出力」でページタイプの初期表示画面を開いて、
 Express詳細ブロックを任意の場所へ追加。

2)「Expressエントリー詳細を編集」画面で
 エントリー:「このページのカスタム属性のエントリーを取得」
 エクスプレスエントリー属性:該当する属性を選択
 データを表示するエンティティフォーム:該当するフォームを選択


これで値自体は表示されるようになりましたが、新たに疑問が出てきました。

各要素に別々のクラスを与えたいのですが、その方法がわかりません。

また、画像属性もエンティティに含まれているので、画像として表示したいのですが、


<div class="form-group">
<div>
<label class="control-label">アイコン画像</label>
</div>
<div>
<a target="_blank" href="/download_file/7/266" class="ccm-attribute-image-file ccm-attribute-image-file-画像">avatar.png</a>
</div>
</div>


のようにファイル名で表示されてしまいます。

/concrete/elements/express/form/view/form.php 内のforeach()で値が動的に取得されているのかな、
という程度までは理解できましたが、具体的に各属性を判別するにはどうしたらよいのでしょうか?
最適な方法があればご教示いただければ幸いです。

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

Posted on 5月 27, 2021 at 8:43 午後

Re: コアファイルのオーバーライド方法について

情報ありがとうございます!
確認いたします!

Posted on 5月 27, 2021 at 4:13 午後

Re: Expressエンティティをページ属性として表示したい

ありがとうございます!
使ってみます!

Posted on 5月 27, 2021 at 4:10 午後

コアファイルのオーバーライド方法について

コアファイルのオーバーライドを行いたいのですが、エラーになってしまうので
どこが間違っているのかご教示いただければ幸いです。

作業はこちらの記事を参考にして行ってみました。
https://concrete5-japan.org/help/5-7/recipes/override-almost-any-core-file-in-5-7/

オーバーライドしたいファイル:
/concrete/src/Form/Service/Widget/DateTime.php

行った作業:
1)/concrete/src/Form/Service/Widget/DateTime.php を

/Application/src/Form/Service/Widget へコピーしてnamespaceを以下に変更

namespace Application\Src\Form\Service\Widget;


2)/concrete/config/app.php の中の

'core_form' => '\Concrete\Core\Form\FormServiceProvider', 

を確認

3) /application/config/app.php を開いて



return [
'providers' => array(
'core_form' => '\Application\Src\Form\CustomFormServiceProvider'
)
];

とします。

4)/concrete/src/Form/FormServiceProvider.php を

/application/src/Form/ へコピーしてファイル名をCustomFormServiceProvider.php とします。

5)ファイルの中身を以下に変更



namespace Application\Src\Form;

class CustomFormServiceProvider extends \Concrete\Core\Form\FormServiceProvider
{
public function register()
{
$singletons = [
'helper/form' => '\Concrete\Core\Form\Service\Form',
'helper/form/attribute' => '\Concrete\Core\Form\Service\Widget\Attribute',
'helper/form/color' => '\Concrete\Core\Form\Service\Widget\Color',
'helper/form/font' => '\Concrete\Core\Form\Service\Widget\Typography',
'helper/form/typography' => '\Concrete\Core\Form\Service\Widget\Typography',
'helper/form/date_time' => '\Application\Src\Form\Service\Widget\DateTime',
'helper/form/page_selector' => '\Concrete\Core\Form\Service\Widget\PageSelector',
'helper/form/rating' => '\Concrete\Core\Form\Service\Widget\Rating',
'helper/form/user_selector' => '\Concrete\Core\Form\Service\Widget\UserSelector',
'helper/form/group_selector' => '\Concrete\Core\Form\Service\Widget\GroupSelector',
'form/express/entry_selector' => '\Concrete\Core\Form\Service\Widget\ExpressEntrySelector',

];

foreach ($singletons as $key => $value) {
$this->app->singleton($key, $value);
}

$this->app->singleton(ControlRegistry::class);

$this->app->bind(DestinationPicker\DestinationPicker::class, function (Application $app) {
return $app->build(DestinationPicker\DestinationPicker::class)
->registerPickers([
'none' => $app->make(DestinationPicker\NoDestinationPicker::class),
'page' => $app->make(DestinationPicker\PagePicker::class),
'file' => $app->make(DestinationPicker\FilePicker::class),
'external_url' => $app->make(DestinationPicker\ExternalUrlPicker::class),
'email' => $app->make(DestinationPicker\EmailPicker::class),
])
;
});
}
}


この作業ですべてのページで以下のエラーとなってしまいます。

Fatal error: Uncaught Error: Class '\Application\Src\Form\CustomFormServiceProvider' not found in /home/****/****/public-html/***/concrete/src/Foundation/Service/ProviderList.php:37 Stack trace: #0 /home/****/****/public-html/***/concrete/src/Foundation/Service/ProviderList.php(25): Concrete\Core\Foundation\Service\ProviderList->createInstance('\\Application\\Sr...') #1 /home/****/****/public-html/***/concrete/src/Foundation/Service/ProviderList.php(48): Concrete\Core\Foundation\Service\ProviderList->registerProvider('\\Application\\Sr...') #2 /home/****/****/public-html/***/concrete/src/Foundation/Runtime/Boot/DefaultBooter.php(320): Concrete\Core\Foundation\Service\ProviderList->registerProviders(Array) #3 /home/****/****/public-html/***/concrete/src/Foundation/Runtime/Boot/DefaultBooter.php(104): Concrete\Core\Foundation\Runtime\Boot\DefaultBooter->initializeServiceProviders(Object(Concrete\Core\Application\Application), in /home/****/****/public-html/***/concrete/src/Foundation/Service/ProviderList.php on line 37


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

# concrete5 Version
Core Version - 8.5.5
Version Installed - 8.5.5
Database Version - 20201116182100

# Database Information
Version: 5.7.31
SQL Mode:

# concrete5 Packages
None

Posted on 5月 27, 2021 at 3:58 午後

Expressエンティティをページ属性として表示したい

ブログページを作成する際、作成担当者を選択すると、ページに名前、所属、アイコン画像が自動的に表示されるように考えています。

そこでまず、Expressでエンティティ(staff)を作成し、属性(name,department,images)を追加しました。

これをブログページのページ属性(att_staff)として設定し、コンポーザで選択するところまではできました。

次に、選択された担当者の情報を表示するプログラムをテンプレート(blog.php)へ
追加したいのですが、その表記方法がわかりません。

同じようなことをやられた経験がある方、もしくは参考文献などあれば、ご教示いただけますでしょうか。

こんな書き出しで始まると思うのですが。


$c = Page::getCurrentPage();
$ent = $c->getAttribute('att_staff');
if (!empty($ent)){
 :
 :
}


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

Posted on 5月 27, 2021 at 3:51 午後

Re: レガシーフォームを複数使用する場合のメールテンプレートについて

pictronさん

ありがとうございます!
ページ編集にて各ブロック名を設定し、controller.phpで判断できました!

助かりました、ありがとうございました!

Posted on 5月 15, 2021 at 4:19 午後

レガシーフォームを複数使用する場合のメールテンプレートについて

お世話になっております。

「自動返信メールの実現」
http://concrete5-japan.org/community/forums/chat/post-19852/

こちらの投稿を参考にさせていただき、自動返信メールを送信することが出来ました。
(ありがとうございました。)

レガシーフォームを1つのサイトで複数利用し、各々のフォームに自動返信メール機能を
付加したいとおもいます。

レガシーフォームが1つの場合、自動返信メール機能を使用する場合は、
以下のようにファイルを追加しましたが、

/application/block/mail/controller.php
/application/mail/block_form_auto_reply.php

複数のレガシーフォームの場合は、どのようなファイル構成にすればよいか
ご教示いただけますでしょうか。
よろしくお願いいたします。

Posted on 5月 06, 2021 at 10:47 午後