登録日
2019年11月28日

メンバー検索

  

ykbigdrive72

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

コミュニティバッジ

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

投稿

101から110までを表示 (計136)

Re: 外部フォームからExpressエントリを登録したい

いつもありがとうございます。
フォーラムの皆さま、ありがとうございました。

お陰様で、外部フォームからExpressエンティティ(user)へ無事データ登録
することができました。
拙い質問内容にいつも真摯にご回答賜り、本当にありがとうございます。
今回賜った回答で、concrete5 のシステムについてより勉強させていただけ
ました。
ありがとうございます。
今後ともどうぞよろしくお願い致します。
この質問スレッドは、これで終了とさせていただきます。

Posted on 7月 22, 2020 at 3:32 午後

Re: 外部フォームからExpressエントリを登録したい

いつもありがとうございます。
すみません、自己解決しました。

http://www.cherrypieweb.com/1110

を再度読み返し、私の間違いに気づきました。
結果、ファイル名とクラス名を変更しました。

【修正前】
ファイル名:GetExpressData.php
クラス名:exGet

【修正後】
ファイル名:get_express_data
クラス名:GetExpressData

concrete5 におけるファイルやクラス名命名規則の最も基本的な
ところでございました。
大変失礼いたしました。
お陰様で、コントローラからレスポンスを受信することができました。
これから、Expressへのデータ登録へ進んでまいります。
ありがとうございました。

Posted on 7月 22, 2020 at 1:50 午後

Re: 外部フォームからExpressエントリを登録したい

いつもありがとうございます。
昨日より、phpの構成等を一から見直しました。
まずは、当フォーラムの過去記事を参照して、Expressエンティティ(エンティティ名:user)
からデータを取得できるか、Viewに設置したphpファイル(ファイル名:GetExpressData.php)に
<?php
$entry = Express::getObjectByHandle('user');
$list = new Concrete\Core\Express\EntryList($entry);
$results = $list->getResults();
if (count($results) > 0){
foreach($results as $exEntry){
$userid = $exEntry->getUserid();
$username = $exEntry->getName();
$email = $exEntry->getEmail();
$pref = $exEntry->getUserpref();
$shousai = $exEntry->getShousai();
?>
<div class="col-sm-4">
<?=$userid;?>
</div>
<br>
<div class="col-sm-4">
<?=$username;?>
</div>
<br>
<div class="col-sm-4">
<?=$email;?>
</div>
<br>
<div class="col-sm-4">
<?=$pref;?>
</div>
<br>
<?php
}
}
?>
としましたところ、外部ブロックがロードされた際にエンティティuserからデータを
取得して表示することができました。
昨日は、データをExpressが取得する上のコードをコントローラ側に記述して、
"Page Not Found"と表示されておりました。

今度は、コントローラ側のファイル(ファイル名:GetExpressData.php)に、テスト
用の外部フォームを参考にして、外部フォームのブロックIDを取得した際に、
レスポンスを返すコートを記述して、サーバに設置しました。

<?php
namespace Application\Block\ExternalForm\Form\Controller;
use Concrete\Core\Controller\AbstractController;
use Core;
use UserInfo;

class exGet extends AbstractController{

public function action_express_get($bID = false)
{
if ($this->bID == $bID){
$this->set('response', t('Thanks!'));
return true;
}
}

public function view(){
$this->set('message', t('This is test!'));
}
}
?>

テスト用外部フォームでは、view側でアクションが行われていない時(つまりロード
されたとき)は、$message の内容がフォームに表示されておりますが、どういうわけ
か、何も表示されておりません。
次に、レスポンスがあれば、view側のフォームに

if (isset($response)){
var_dump($response);
?>
<div id="ok">
<h3>応答あり</h3>
</div>
と記述いたしましたが、コントローラ側を呼び出そうとすると、"error404 Page not found"
と表示されてしまいます。
過去のフォーラム記事で、namespace に起因している記事がありましたので、名前空間を
見直してみましたが、問題ないようです。
なんとか、コントローラ側のファイルから応答を取りたいのですが、404エラーが発生
する原因が分かりかねております。
どなた様か、この対処方法についてご教示頂けませんでしょうか?
どうぞよろしくお願い致します。

http://demo.survey-support.jp/test/index.php

で、実際にExpressから取得したデータも表示されております。

Posted on 7月 21, 2020 at 4:20 午後

Re: 外部フォームからExpressエントリを登録したい

菱川さま
ご回答ありがとうございます。
再度 express_data.php を一から見直してみます。
ありがとうございます。

Posted on 7月 20, 2020 at 3:45 午後

Re: 外部フォームからExpressエントリを登録したい

再度例外内容について確認いたしました。
Whoops\Exception\ErrorException: Cannot declare class Application\Block\ExternalForm\form\Controller\ExpressEntry, because the name is already in use in file /virtual/htdocs/default/test/application/blocks/external_form/form/controller/express_data.php on line 89
Stack trace:
1. Whoops\Exception\ErrorException->() /virtual/htdocs/default/test/application/blocks/external_form/form/controller/express_data.php:89
2. Whoops\Run->handleError() /virtual/htdocs/default/test/concrete/vendor/filp/whoops/src/Whoops/Run.php:433
3. Whoops\Run->handleShutdown() [internal]:0

という内容になっておりましたので、コントローラ側のexpress_data.phpファイルの
namespaceを確認いたしましたが、階層の定義に間違いはございませんでした。
試しに、クラス名を変更しても、the name is already in use in file と表示されます。

Posted on 7月 20, 2020 at 2:50 午後

Re: 外部フォームからExpressエントリを登録したい

先ほどの例外メッセージの後に、

Whoops\Run handleError
…/vendor/filp/whoops/src/Whoops/Run.php433
0
Whoops\Run handleShutdown
[internal]0

という文言も表示されておりました。

Posted on 7月 20, 2020 at 2:28 午後

Re: Re: 外部フォームからExpressエントリを登録したい

菱川さま

ご返信ありがとうございます。
ご回答を受けまして、express_data.phpの89行目を確認いたしました
ところ、class EntryForm extends AbstractController{
}の、}の個所になっておりました。
恐れ入ります。この個所が例外を起こすのは何が起因していると
いうことになりますでしょうか?

Posted on 7月 20, 2020 at 2:25 午後

外部フォームからExpressエントリを登録したい

いつもこのフォーラムで助けていただいております。
先日来、Expressエンティティへの接続について質問を
させていただいておりますが、私の理解が不十分で、皆さま
に大変ご迷惑をおかけしております。
今回、外部フォームブロックから、Expressエントリを新規
追加したいと思い、挑戦しておりますが、質問内容が以前とは
異なりますので、新たにスレッドを立てさせていただきます。
どうぞよろしくお願い致します。

【作っているもの】
外部フォーム:ファイル名 express_data.php
コントローラ:ファイル名 express_data.php(controllerフォルダに格納)
仕様:フォームには5つの部品を設置しています。
  1.テキスト ユーザID入力欄 (userid)
  2.テキスト ユーザ名入力欄 (name)
  3.テキスト メールアドレス入力欄 (email)
  4.プルダウンメニュー 居住都道府県選択欄 (pref)
  5.テキストエリア その他詳細入力欄 (shousai)
  6.submitボタン

Express側に、’user’ エンティティを作成、上の入力用フォームでsubmit
が押下されたタイミングで userエンティティにデータを新規登録したい
と思っております。

【コード部分】
・コントローラに置いたexpress_data.phpにおいて
 冒頭use を用いて
 use Express;を宣言
 
 View側フォームのaction で指定した action_express_entry において、
    public function action_express_entry(){
$userid = trim($this->post('p_userid'));
$username = trim($this->post('p_username'));
$email = trim($this->post('p_email'));
$pref = trim($this->post('p_pref'));
$shousai = $this->post('p_shousai');
//エラーがないとき、入力データをExpressへ登録する
//Expressを使う
$entry = Express::buildEntry('user');
$entry->setUseruserid($userid);
$entry->setUsername($username);
$entry->setUseremail($email);
$entry->setUserpref($pref);
$entry->setUsershousai($shousai);
$entry->save();
$this->set('response', true);
return true;
}
としております。

その後、ファイルをサーバにアップロードし、
http://demo.survey-support.jp/test/index.php
にアクセスしましたところ、


Whoops\Exception\ErrorException
/virtual/htdocs/default/test/application/blocks/external_form/form/controller/express_data.php89 というエラーが表示されてしまいました。
これはどういうことを意味しているのか、理解ができておりません。
何が原因が、ご教示頂ければ幸いです。
どうぞよろしくお願い致します。

【サーバ環境情報】
# concrete5 Version
Core Version - 8.5.4
Version Installed - 8.5.4
Database Version - 20200609145307

# Database Information
Version: 5.1.73
SQL Mode:

# concrete5 Packages
None

# concrete5 Overrides
blocks/external_form/form/controller, blocks/external_form/form/express_data.php, blocks/external_form/form, blocks/external_form

# concrete5 Cache Settings
Block Cache - On
Overrides Cache - On
Full Page Caching - Off
Full Page Cache Lifetime - Every 6 hours (default setting).

# Server Software
Apache

# Server API
apache2handler

# PHP Version
7.1.33

# PHP Extensions
apache2handler, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, imap, intl, json, ldap, libxml, mbstring, mcrypt, mysqli, mysqlnd, odbc, openssl, pcre, PDO, pdo_mysql, PDO_ODBC, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, recode, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, wddx, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib

# PHP Settings
max_execution_time - 3600
log_errors_max_len - 4096
max_file_uploads - 100
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 1000
memory_limit - 64M
post_max_size - 384M
sql.safe_mode - Off
upload_max_filesize - 256M
ldap.max_links - Unlimited
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
odbc.max_links - Unlimited
odbc.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
pgsql.max_links - Unlimited
pgsql.max_persistent - Unlimited
session.cache_limiter - no value
session.gc_maxlifetime - 7200
soap.wsdl_cache_limit - 5
opcache.max_accelerated_files - 4000
opcache.max_file_size - 0
opcache.max_wasted_percentage - 5

Posted on 7月 20, 2020 at 1:55 午後

Re: Expressのテーブルデータ取得について

カツさん

 ご返信まことにありがとうございます。
お教えいただいたサンプルコードを参考に、まずはどのように動作するか
確認してみます。
まだまだ知識が不足しているということだと思います。
もう少しドキュメントや、カツさんのコードを学習して、確実な動作ができる
ようになります。

Posted on 7月 16, 2020 at 11:01 午前

Re: Expressのテーブルデータ取得について

おはようございます。たびたび申し訳ございません。
現在、フォームヘルパーを用いた外部フォームを
作成し、そこにはユーザID、ユーザ名、メールアドレス、
居住都道府県と自由記述欄(テキストエリア)を設置し、
submitボタンを配置しております。
外部フォームは、ブロックとして正常に画面上に表示
することができました。
controller側で、バリデーションヘルパーを用いたエラー
チェック後、Expressデータベースへ接続しようとして
おります。
http://documentation.concrete5.org/developers/express/creating-reading-searching-updating-and-deleting-express-entries
を参照して、Expressへデータ登録を行なおうとしておりますが、
現在作成したExpressエンティティが、「user」であるとしますと、

2/8ページ冒頭にございます、
$address = new \Concrete\Core\Entity\Attribute\Value\Value\AddressValue();
の個所については、どのように定義するべきなのでしょうか?
ここで行き詰っております。
どうぞよろしくお願い致します。

Posted on 7月 13, 2020 at 9:52 午前