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から取得したデータも表示されております。
ハイキック
Re: 外部フォームからExpressエントリを登録したい
すみません、自己解決しました。
http://www.cherrypieweb.com/1110
を再度読み返し、私の間違いに気づきました。
結果、ファイル名とクラス名を変更しました。
【修正前】
ファイル名:GetExpressData.php
クラス名:exGet
【修正後】
ファイル名:get_express_data
クラス名:GetExpressData
concrete5 におけるファイルやクラス名命名規則の最も基本的な
ところでございました。
大変失礼いたしました。
お陰様で、コントローラからレスポンスを受信することができました。
これから、Expressへのデータ登録へ進んでまいります。
ありがとうございました。