プログラムからExpressのエントリーを取得できない
みなさま
↓ページを参考に、Expressに登録したHandle名「event」のエントリーを取得しようとしています。
http://documentation.concrete5.org/developers/express/creating-reading-searching-updating-and-deleting-express-entries
[ソース]
$entity = Express::getObjectByHandle('event');
$list = new \Concrete\Core\Express\EntryList($entity);
$events = $list->getResults();
結果、$eventsに何も格納されず、空のArrayになってしまいます。
試しに、getResults()をgetTotalResults()にしてみると、
エントリーの個数が返ってきます。
どうすればうまく動作しますでしょうか?
どうぞよろしくお願いします。
# concrete5 Version
Core Version - 8.4.1
Version Installed - 8.4.1
Database Version - 20180710203437
# concrete5 Packages
Event Calendar (3.4.1), Quick Tabs (1.0), Stucco (2.1.6), Stylish Ordered Lists (1.0)
# concrete5 Cache Settings
Block Cache - Off
Overrides Cache - Off
Full Page Caching - Off
Full Page Cache Lifetime - Every 6 hours (default setting).
# Server Software
Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.6.36
# Server API
apache2handler
# PHP Version
5.6.36
# PHP Extensions
apache2handler, bz2, calendar, Core, ctype, curl, date, dom, ereg, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, json, libxml, mbstring, mhash, mysql, mysqli, mysqlnd, openssl, pcre, PDO, pdo_mysql, pdo_sqlite, Phar, posix, Reflection, session, shmop, SimpleXML, sockets, SPL, sqlite3, standard, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xml, xmlreader, xmlwriter, xsl, zip, zlib
# PHP Settings
max_execution_time - 600
log_errors_max_len - 1024
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 1000
memory_limit - 512M
post_max_size - 512M
sql.safe_mode - Off
upload_max_filesize - 512M
mysql.max_links - Unlimited
mysql.max_persistent - Unlimited
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
session.cache_limiter - no value
session.gc_maxlifetime - 7200
Re: プログラムからExpressのエントリーを取得できない
ありがとうございます!
試してみたのですが、何も出力されませんでした。
$events自体が空っぽのようです。
DBのクエリーログを見ていると、getResults()実行時に
問い合わせはあるようですが、結果が格納されていないようです。
Re: プログラムから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のエントリーを取得できない
ありがとうございます。
教えていただいたソースを参考にしてみましたが、ダメでした…
まだテスト段階で、出力も下のように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からの値取得をジョブとして作成しています。
ジョブとして作成することは、特に関係ないですよね?
Katz Ueno
Re: プログラムからExpressのエントリーを取得できない
foreach ($events as $event) {
echo $event->getXXXXXX();
// 続く
}
これで試してみてください。