Re: プログラムからExpressのエントリーを取得できない

2018年7月27日 at 19:29

参考までに、Express のサンプルデータを公開しています。
http://github.com/katzueno/c5-express-boiler-plate

ここの
http://github.com/katzueno/c5-express-boiler-plate/blob/master/application/blocks/express_entry_list/templates/curry_store_list.php
が一覧表示のサンプルです。

サンプルの $results が、$events と同じです。

Re: プログラムからExpressのエントリーを取得できない

2018年7月28日 at 0:21
Katzさん

ありがとうございます。

教えていただいたソースを参考にしてみましたが、ダメでした…
まだテスト段階で、出力も下のようにvar_dumpで確認しているだけなんです。

$entity = Express::getObjectByHandle('event');
$list = \Concrete\Core\Express\EntryList($entity);
$events = $list->getResults();
$total = $list->getTotalResults();
var_dump($events); // array(0) {}   が出力される
var_dump($total); // string(2) "16" が出力される

このExpressからの値取得をジョブとして作成しています。
ジョブとして作成することは、特に関係ないですよね?
 

Re: プログラムからExpressのエントリーを取得できない

2018年7月30日 at 13:58
Katzさん

教えていただいた方法通りに、「Expressのカスタムテンプレート」ですと、
うまく動作し、エントリーを取得できました!

問題は、「自作ジョブからExpressエントリーを取得できない」
ということになりますね。
 

Re: プログラムからExpressのエントリーを取得できない

2018年7月31日 at 12:58
いろいろ試してみました。

どうも、EntryListクラスのgetResultメソッド内、下の箇所が原因で
結果が返ってきていないようです。

if (is_object($entry)) {
if ($this->checkPermissions($entry)) {
return $entry;
}
}

エントリーにアクセスするためのパーミッション設定が必要なのでしょうか?
 

Re: プログラムからExpressのエントリーを取得できない

2018年8月1日 at 12:00
パーミッションの件解決し、うまくいきました!

原因は「CLIでジョブを実行していたこと」でした。
管理画面からジョブ実行したところうまく動作しました。

いろいろとお騒がせしました。
ありがとうございました。