外部フォームで1つのcontroller が応答しない
フォーラムの皆さまへ
いつもお世話になっております。
先日来、外部フォームを作成し、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 が応答しない
<h3><?=$response;?></h3>
show_express_data
<p><h3><?=$message?></h3></p>
変数の違いが原因かと。
Re: 外部フォームで1つのcontroller が応答しない
「セットした変数と呼び出した変数が異なるから表示されない」
ということです。
■表示される
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 が応答しない
大変迅速なご回答、まことにありがとうございます。
私のご説明が拙く、申し訳ございません。
実は、ご指摘の 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 が応答しない
で、ふと気になったんですが、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 が応答しない
迅速なご回答、まことにありがとうございます。
ご指摘の通り、変数名を変えてみました。
get_express_data 側を $message1、 show_express_data側を $message2 として
みましたが、結果は、get_express_data の $message1のみ正常に表示されました。
もうひとつの検証用として、メニューにある"shop" においても、別のエンティティ
"shop" のエントリを引っ張って表示させましたが、こちらも<h3><$message3></h3>
として試しましたが、表示されませんでした。
Re: 外部フォームで1つのcontroller が応答しない
expressデータ作って、ハイキックさんが提示した外部フォーム2種をコピペで作成して…
結果は添付画像の通り$messageが表示されちゃいました(@_@)
もしかしてコントローラー側のファイル名が間違ってるってな可能性はないですか?
Re: 外部フォームで1つのcontroller が応答しない
いつもお世話になっております。
先日来、質問をさせていただいておりました、ファイル2つのうちの
1つのコントローラから応答がない件で、正常に動作しているファイル
をリネームし、別のファイルとして動作を確認したところ、正常に
応答が得られました。
応答のなかったファイルを、すべて確認してみましたが、スペルや
ファイル名などで間違いなどはなく、原因は不明です。
しかし、正常なファイルをリネームして解消いたしました。
aniya様、大変迅速かつご丁寧にご回答を賜り、ありがとうございました。
ハイキック
Re: 外部フォームで1つのcontroller が応答しない
検証中のURLです。
左右に外部フォームが並んでおりますが、右側は"ユーザテーブル登録デモ"の
$message 内容が表示されておりますが、左側にも、本来は
"ユーザテーブル検索デモ" の$message が表示されなければなりませんが、なにも
表示されておりません。
http://demo.survey-support.jp/test/index.php