登録日
2019年11月28日

メンバー検索

  

ykbigdrive72

名前(ニックネーム)
ハイキック
自分のconcrete5サイト
自己紹介
名古屋の印刷会社でプログラム開発に従事しております。
基本は.NETでWEBアプリケーションやWindowsアプリケーション
開発を主に行っています。
WEBアプリの開発効率を上げるため、最近はWordPress、Kintone
やMicrosoft PowerBI を使ったソリューションも提案しております。
このたび、Concrete5 の勉強を始めました。
どうぞよろしくお願い致します。
concrete5.org のユーザー名
ykbigdrive72
concrete5 Slack Team ID
Twitterアカウント
フォーラム総投稿数
140

コミュニティバッジ

エバンジェリスト 宣伝・普及活動を行っていただいている concrete5 の伝道師です!エバンジェリストについて

投稿

31から40までを表示 (計136)

Re: エクスプレスエントリーデータダウンロードを外部フォームから実行したい

ご教示ありがとうございます。
参照クラスを以下のように設定し、コードを変更いたしました。
そうしますと、「このサイトにアクセスできません。
ウェブページは一時的に停止しているか、新しいウェブアドレスに移動した可能性があります。」と表示されました(添付ファイル)。
参照クラス設定か、どこかで間違えている可能性もあるかと存じます。
どこが原因か、お教えいただけますと幸いでございます。どうぞよろしくお願い
申し上げます。

参照クラス・名前空間
namespace Application\Block\ExternalForm\Form\Controller;
use Concrete\Core\Controller\AbstractController;
use Concrete\Core\Csv\WriterFactory;
use Concrete\Core\Express\Export\EntryList\CsvWriter;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Concrete\Core\Entity\Express\Entity;
use Concrete\Core\Express\EntryList;
use Core;
use UserInfo;
use User;
use Express;

public function action_submit(){
//CSV作成対象エンティティの取得
$input['csvent'] = $this->post('csvent');
$me = $this;

if (isset($input['csvent']) && $input['csvent'] != ''){
$entname = $input['csvent'];
}

//$fileName = $entname.' download file';
$entity = Express::getObjectByHandle($entname);

$headers = [
'Content-Type' => 'text/csv',
'Content-Disposition' => 'attachment; filename=' . $entity->getHandle() . '.csv',
];

$config = $this->app->make('config');
$bom = $config->get('concrete.export.csv.include_bom') ? $config->get('concrete.charset_bom') : '';
$datetime_format = $config->get('concrete.export.csv.datetime_format');
//ここまでのすべての変数は、中身が正常に取れておりました
$response = StreamedResponse::create(function () use ($entity, $me, $bom, $datetime_format) {
$entryList = new EntryList($entity);
$writer = $this->app->make(CsvWriter::class, [
$this->app->make(WriterFactory::class)->createFromPath('php://output', 'w'),
new Date()
]);
echo $bom;
$writer->insertHeaders($entity);
$writer->insertEntryList($entryList,$datetime_format);
}, 200, $headers);

$response->send();

$this->set('message', 'csvダウンロードが終了しました。');
}

Posted on 2月 16, 2021 at 1:21 午後

Re: エクスプレスエントリーデータダウンロードを外部フォームから実行したい

hissyさん

 おはようございます。ありがとうございます。
2/12の週刊concrete5において、katzさんより、
viewから渡したエンティティハンドル名がどのように
なっているかなど、var_dump で確認してみてくださいと
教えていただきましたので、それぞれの変数を確認して
見ました。

var_dump($entname);
exit();
としたところ、$entname は、予定通り、エンティティのハンドル
名が渡っておりました。
その後、return StreamedRespons::create~
の上の行までは、正常に値が取れておりました。
return StreamedRespons::create~で何も取得できていない状態
になっておりましたので、教えていただいた方法で検証させて
いただきます。ありがとうございます。

Posted on 2月 16, 2021 at 10:35 午前

Re: エクスプレスエントリーデータダウンロードを外部フォームから実行したい

いつもお世話になっております。
viewのリストボックスで取得したエンティティ名(ハンドル名)を
controller側へ渡して$entname に代入し、エントリーデータを取得しようと
いたしました。
ところが、下記コードを実行しましても、CSVダウンロードのための
ダイアログボックス自体も表示されません。
なんの反応もない状態でございます。
コードの解釈が間違えていると思います。
$input['csvent'] に、viewで選択したエンティティ名'enqa'を渡しているのですが、
これが原因でしょうか?
ご教示いただければ幸いです。


public function action_submit(){
//CSV作成対象エンティティの取得
$input['csvent'] = $this->post('csvent');

if (isset($input['csvent']) && $input['csvent'] != ''){
$entname = $input['csvent'];
}


$entity = Express::getObjectByHandle($entname);
$headers = [
'Content-Type' => 'text/csv',
'Content-Disposition' => 'attachment; filename=' . $entity->getHandle() . '.csv',
];
$config = $this->app->make('config');
$bom = $config->get('concrete.export.csv.include_bom') ? $config->get('concrete.charset_bom') : '';
$datetime_format = $config->get('concrete.export.csv.datetime_format');

return StreamedResponse::create(function () use ($entity, $me, $bom, $datetime_format) {
$entryList = new EntryList($entity);

$writer = $this->app->make(CsvWriter::class, [
$this->app->make(WriterFactory::class)->createFromPath('php://output', 'w'),
new Date()
]);
echo $bom;
$writer->insertHeaders($entity);
$writer->insertEntryList($entryList,$datetime_format);
}, 200, $headers);
}

Posted on 2月 12, 2021 at 4:14 午後

Re: エクスプレスエントリーデータダウンロードを外部フォームから実行したい

hissyさん

ありがとうございます。
そこまでご配慮いただき、感謝申し上げます。
はい、上のようにして$entityを取得しておりますので、
これを public function csv_export に引き継いで、
一度試させていただきます。

ありがとうございます。

Posted on 2月 09, 2021 at 6:02 午後

Re: エクスプレスエントリーデータダウンロードを外部フォームから実行したい

katzさん
 いつも大変お世話になっております。
先週の週刊concrete5を拝聴させていただき、大変勉強になりました。
ありがとうございます。

番組内でご説明いただいた、エンティティのIDを取得しようと試みて
おります。

hissyさんよりご説明いただいた、
public function csv_export($treeNodeParentID = null){
$me = $this;
$parent = $me->getParentNode($treeNodeParentID);
$entity = $me->getEntity($parent);
...
}

において、$treeNodeParentID が、MYSQLの「ExpressEntities」テーブル
における "id" に該当すると思うのですが、違いますでしょうか?

hissyさんがご説明下さっているのは、ダッシュボードのExpressエンティティ
詳細画面でエントリーデータ一覧を表示させているため、
$me->getParentNodeID() で表示しているExpressエンティティのエントリー
データの親ID(エンティティID)を取得していると思うのですが、これを
エントリーリストから取得するとしますと、
まず、$entity = Express::getObjectByHandle('●●●●');
●●●●はエンティティのハンドル名
でエンティティ情報を取得してきて、そのデータのIDを
$id = $entity->getID();
で取得すればよいように考えたのですが、この考えは間違っておりますで
しょうか?

ExpressEntitiesテーブルの「id」が取得できれば、あとは、
public function csv_export と同じ方法でcsvファイルの作成ができると
考えております。
どうぞよろしくお願い申し上げます。

Posted on 2月 09, 2021 at 5:35 午後

Re: エクスプレスエントリーデータダウンロードを外部フォームから実行したい

hissyさん
 おはようございます。
ありがとうございます。よく理解できました。
このコアクラスと、ExpressエンティティIDを
動的に取得できれば、csvファイルダウンロード
機能が実装できると思います。
ありがとうございました。

Posted on 2月 09, 2021 at 9:17 午前

Re: エクスプレスエントリーデータダウンロードを外部フォームから実行したい

aniyaさま、おはようございます。
いつもご支援を賜りまして、ありがとうございます。
今回の週間concrete5を拝聴し、hissyさんからご教示いただいた、Githubのコードを
確認させていただき、ExpressのCSVエクスポートの動きが理解できてまいりました。
external formのリストボックスで選択したExpressエンティティ(番号)を引数として
csvライブラリに渡して検証してみたいとおもいます。
concrete5には、フォームヘルパーやメールヘルパーと同様に、CsvWriterのような強力
なライブラリが最初から備わっているのは、本当に助かります。
1からphpコードを書くことに比べ、開発効率が格段に上がります。
ありがとうございます。頑張って解決いたします。

Posted on 2月 08, 2021 at 10:58 午前

Re: フォームヘルパのラジオボタンなどで、ラベルクリック応答を実現したい

フォーラムの皆さま

 いつもお世話になっております。
おかげさまで、自己解決いたしました。

フォームヘルパで設置した部品を<label>タグで囲むことで実現できました。

【Before】
<div class="form-group border col-sm-2"><?=$form->radio('gakka', '1')?>法学科</div>

【After】
<div class="form-group border col-sm-2"><label><?=$form->radio('gakka', '1')?>法学科</label></div>

取り急ぎ、ご報告申し上げます。

Posted on 2月 04, 2021 at 2:11 午後

フォームヘルパのラジオボタンなどで、ラベルクリック応答を実現したい

フォーラムの皆さま

 おはようございます。
いつも暖かいご支援をいただき、ありがとうございます。
外部フォームで、フォームヘルパの「ラジオボタン」や
「チェックボックス」を配置しておりますが、

通常のHTML5に見られるように、ラジオボタンだけではなく、
後ろにつくラベルをクリックしたときにも、ラジオボタンが
セレクトされた状態にしたいと思っております。

HTML5の例
<input type="radio" name="gakubu" id="L" value="1"><label for="L">法学部</label>

上記のように記述しますと、ラジオボタンとラベルどちらをクリックしても
ラジオボタンが選択されます。

フォームヘルパの例
フォームヘルパのラジオボタンで、buttonvalue という属性がございますが、
これがinputタグのidに該当すると思い、
<?=$form->radio('gakubu', 'L', '1')?><label for="L">①法学部</label>
としてみましたが、ページ上ではラベルをクリックしてもラジオボタンは
選択できませんでした。

方法がございましたら、お教えいただけますと幸いです。
どうぞよろしくお願い致します。

Posted on 2月 04, 2021 at 11:24 午前

Re: Re: エクスプレスエントリーデータダウンロードを外部フォームから実行したい

hissyさん

 おはようございます。
ありがとうございます。
ぜひ確認させていただきます。
追加する機能が増えるにつれ、まだまだ勉強不足を痛感
しております。
勉強させていただきます。

Posted on 2月 04, 2021 at 11:15 午前