外部フォームで1つのcontroller が応答しない

2020年7月27日 at 16:09

フォーラムの皆さまへ

いつもお世話になっております。
先日来、外部フォームを作成し、Expressデータベースとのやり取りを
行なう検証ページを作成しております。
お陰様で、外部フォームで入力した情報をExpressのエンティティ(user)へ
登録およびuserエンティティの一覧を表形式で表示するところまでは進み
ました。

現在1枚のシングルページに2つの外部フォームを設置
1つ目:get_express_data.php
2つ目:show_express_data.php

それぞれ、view とcontrollerのファイルを持ち、
サーバのApplication\ExternalForm\Forms配下と、
Application\ExternalForm\Forms\Controller配下にphpファイルを置いております。
1つ目の get_express_data.php のコントローラでは、
class GetExpressData 配下の
public function view(){
$this->set('message', 'HogeHoge');
}
 の内容がView側のフォームに初期表示されていますが、2つ目のフォームにも
1つ目のコントローラと全く同じ設定にした
public function view(){
$this->set('message', 'FunyaFunya');
}

が外部フォームに初期表示されません。
1枚のページに2つの外部フォームを設置して、view と controllerファイルの名前は
同じにしております。
1つ目で正しく表示されて、2つ目のメッセージが表示されない原因として何が
考えられますでしょうか?
お分かりの方がいらっしゃいましたら、ぜひご教示頂ければと存じます。

添付ファイルとして、get_express_data.php(ビューとコントローラ)
show_express_data.php(ビューとコントローラ)をお付けしております。
どうぞよろしくお願い申し上げます。

タグ:

Re: 外部フォームで1つのcontroller が応答しない

2020年7月27日 at 17:10
恐れ入ります。
検証中のURLです。

左右に外部フォームが並んでおりますが、右側は"ユーザテーブル登録デモ"の
$message 内容が表示されておりますが、左側にも、本来は
"ユーザテーブル検索デモ" の$message が表示されなければなりませんが、なにも
表示されておりません。

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

Re: 外部フォームで1つのcontroller が応答しない

2020年7月28日 at 7:39
get_express_data
<h3><?=$response;?></h3>

show_express_data
<p><h3><?=$message?></h3></p>

変数の違いが原因かと。
 

Re: 外部フォームで1つのcontroller が応答しない

2020年7月28日 at 8:07
aniyaさま

 おはようございます。
ご回答ありがとうございます。
ご指摘のように、変数$message にセミコロンを付与してみましたが、
やはり表示されませんでした。
ほかにも、ご指摘のような構文や記号の誤りがある恐れがございます
ので、再度見直してみたいと存じます。
迅速なご回答、ありがとうございました。
 

Re: 外部フォームで1つのcontroller が応答しない

2020年7月28日 at 9:39
いえ、そういうことではなく
「セットした変数と呼び出した変数が異なるから表示されない」
ということです。

■表示される
show_express_dataController
$this->set('message', t('ユーザテーブル検索デモ'));

show_express_data
<p><h3><?=$message?></h3></p>


■表示されない
get_express_dataController
$this->set('message', t('ユーザテーブル登録デモ'));

get_express_data
<h3><?=$response;?></h3> ← $messageの間違いでは?
 

Re: 外部フォームで1つのcontroller が応答しない

2020年7月28日 at 10:57
aniyaさま

 大変迅速なご回答、まことにありがとうございます。
私のご説明が拙く、申し訳ございません。
実は、ご指摘の get_express_data 側には、コントローラから、2つの変数
を返すようになっており、$response と $message がございます。
ご指摘の個所は、外部フォームのブロックIDを取得し、外部フォームから入力
があった時点で、$response に"データの登録が正常に終了しました"メッセージ
を代入するもので、get_express_dataは、この2つの変数どちらも正常に表示
されております($message; は、$response; よりやや下側に記述しております)。

get_express_data 側は、コントローラのview関数にセットした文字"ユーザテーブル
登録デモ"の文字は表示されるのですが、問題は show_express_dataのファイルで
ございまして、こちらも同じように、コントローラに view関数があり、こちらに
"ユーザテーブル検索デモ"の文字をセットしておりますが、外部フォーム表示に
は何も表示されておりません。

説明不足で大変失礼いたしました。
どうぞよろしくお願いいたします。
 

Re: 外部フォームで1つのcontroller が応答しない

2020年7月28日 at 12:01
勘違いすみません、get_express_data側の$messageみつけました。

で、ふと気になったんですが、get_express_dataとshow_express_dataの両方に
<p><h3><?=$message?></h3></p>という記述があるので、
本来はhttp://demo.survey-support.jp/test/index.phpのソース中に
<p><h3>というタグが2箇所出てこなくてはいけないのですが、
1箇所しか出てきていません。
つまり、$messageが表示されない以前にそれを囲むタグが表示されていない、ということになるのでは?と。
ただ、よくよくindex.phpソースを読んでみると昨日提示された.txtと異なる記述があるので上記は当てにならない気もします。

あと、もう一つ。
二つとも同じ変数名にするのではなく、$message1、$message2みたいにするとどうなりますか?
 

Re: 外部フォームで1つのcontroller が応答しない

2020年7月28日 at 13:57
aniyaさま

迅速なご回答、まことにありがとうございます。
ご指摘の通り、変数名を変えてみました。
get_express_data 側を $message1、 show_express_data側を $message2 として
みましたが、結果は、get_express_data の $message1のみ正常に表示されました。
もうひとつの検証用として、メニューにある"shop" においても、別のエンティティ
"shop" のエントリを引っ張って表示させましたが、こちらも<h3><$message3></h3>
として試しましたが、表示されませんでした。
 

Re: 外部フォームで1つのcontroller が応答しない

2020年7月28日 at 14:18
(今日は諸事情により現実逃避強めなので)854で再現を試みてみました。
expressデータ作って、ハイキックさんが提示した外部フォーム2種をコピペで作成して…
結果は添付画像の通り$messageが表示されちゃいました(@_@)

もしかしてコントローラー側のファイル名が間違ってるってな可能性はないですか?
 

Re: 外部フォームで1つのcontroller が応答しない

2020年7月28日 at 14:35
aniyaさま

素早いレスポンスおよびご検証、本当にありがとうございます。
aniyaさまにてお試しいただいた結果を拝見いたしますと、コントローラ
から応答がございますね(汗)。
恐れ入ります。私の方で何か間違っている可能性が高いと思います。
もう一度見直してみたいと思います。
ありがとうございました。
 

Re: 外部フォームで1つのcontroller が応答しない

2020年7月28日 at 17:39
aniyaさま

 本日はご回答ありがとうございました。
あれから、show_express_dataの2つのファイルをすべて見直して
みましたが、ファイル名、クラス名にはスペル間違いなどは
見当たりませんでした。
何度ファイルをサーバへあげても、show_express_dataのコントローラ
から応答がないようです。
規則で何か間違っていないか、もう一度検証してみます。
ご報告申し上げます。
 

Re: 外部フォームで1つのcontroller が応答しない

2020年7月29日 at 17:41
フォーラムの皆さま

いつもお世話になっております。
先日来、質問をさせていただいておりました、ファイル2つのうちの
1つのコントローラから応答がない件で、正常に動作しているファイル
をリネームし、別のファイルとして動作を確認したところ、正常に
応答が得られました。
応答のなかったファイルを、すべて確認してみましたが、スペルや
ファイル名などで間違いなどはなく、原因は不明です。
しかし、正常なファイルをリネームして解消いたしました。
aniya様、大変迅速かつご丁寧にご回答を賜り、ありがとうございました。