自作外部フォームが動作しない

2016年1月30日 at 17:21

環境
・concrete5:バージョン5.7.5.6
・サーバー:Xserver X10プラン
・MySQLのバージョン:MySQL5.5

いつも お世話になります。
公式の過去記事 Webの記事などを参考に予約を受ける
外部フォームを作成してみました。

なんとか 外部フォームとして認識され設置後
必須項目を入力せずに送信すると ビューにエラーが出て
送信できない所まで動作することが確認できました。

その後 正しい入力値を入力して 送信すると複数のエラーが出て
動作しない状態です。

代表的なエラーは以下の通りで
sprintf(): Too few arguments
application/mail/reserve_form_complete.php:36
なので reserve_form_complete.php:36 行目がおかしいだと
思うのですが
その他にも handleError や /Mail/service.php:158 など
Concrete5 本体側のエラー表示もあり お手上げです。

多分 根本的な書き間違いがあると思うのですが....

PHPなどプログラム知識がないので ご指摘いただければ助かります。

実際のコードへのリンクです。(個人情報がのってたので削除してリンクし直しました。)
http://gist.github.com/itacts/386a51911438828572a6

※ 実際のファイル名にするとうまく保存できなかったので
仮のファイル名 1.php 2.php 3.php で保存しています。

Application\Block\ExternalForm\Form\Controller
以下に reserve_form.php(2.php)

Application\Block\ExternalForm\Form\
以下に reserve_form.php(3.php)

Application\Mail
以下に reserve_form_complete.php(1.php)

にそれぞれのファイルを配置しています。

お手数をおかけしますがどうぞよろしくお願いします。

タグ:

Re: 自作外部フォームが動作しない

2016年1月30日 at 17:41
sprintf(): Too few arguments
application/mail/reserve_form_complete.php:36
のエラーは引数が足りないのが原因だと思います。
%sが9個に対して、36行目で2つだけ設定しているところを修正すればいいと思います。
 

Re: 自作外部フォームが動作しない

2016年1月31日 at 11:50
acliss 様
ご指摘ありがとうございます。
application/mail/reserve_form_complete.php:36
のエラーについては
reserve_form_complete.php の
36行目:", $r_name, $content); 2つを

reserve_form.phpで設定している引数

36行目:", $r_name, $r_email,$r_post,$r_addressj,$r_tel
,$r_data,$r_time,$r_pelple,$r_massage);  9つに
設定することによりエラー表示が無くなりました。

まだ 15個 エラー表示があるのですが お気付きの部分があれば
引き続きご指摘いただければ助かります。

エラー内容は 全て同じで 
内容:Zend\Mail\Message::addTo expects a string, AddressInterface, array, AddressList, or Traversable as its first argument; received "NULL"

場所:/concrete/vendor/zendframework/zend-mail/src/Message.php
場所:/concrete/src/Mail/Service.php
場所:/application/blocks/external_form/form/controller/reserve_form.php
場所:<#unknown>
場所:/concrete/src/Controller/AbstractController.php
場所:/concrete/blocks/external_form/controller.php
場所:/concrete/src/Page/Controller/PageController.php
場所:/concrete/src/Routing/DispatcherRouteCallback.php
場所:/concrete/src/Routing/DispatcherRouteCallback.php
場所:/concrete/src/Application/Application.php
場所:/concrete/bootstrap/start.php
場所:/concrete/dispatcher.php 場所:/concrete/bootstrap/configure.php
場所:/concrete/dispatcher.php
場所:/index.php

"NULL" 受け渡しできるデータが無いという意味?

reserve_form.php 43行目:
<form method ="post" action="<?php echo $this->action('reserve_form_submit')?>">

とか あまり意味がわからず ('reserve_form_submit') と
しているのですが 問題ないでしょうか?

よろしくお願いします。
 

Re: 自作外部フォームが動作しない

2016年1月31日 at 14:07
下記の変数のeが抜けています。
http://gist.github.com/itacts/9393fb72369c10028128#file-3-php-L48
$mh->to($this->post('r_mail'));    ->    $mh->to($this->post('r_email'));
 

Re: Re: 自作外部フォームが動作しない

2016年1月31日 at 17:10
acliss 様
ありがとうございます。

ご指摘いただいた箇所を修正して考えていたような
形で自動返信メールが届くことを確認できました。

大感謝(涙)です
本当に ありがとうございましたm(__)m