質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

594閲覧

"Class 'Application\Block\ExternalForm\Form\Controller\BlockController' not found"

believe

総合スコア91

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2023/01/19 23:46

前提

concrete5の外部フォームについて

■■な機能を実装中に以下のエラーメッセージが発生しました。
BlockController' not found

実現したいこと

メール送信したいです。

発生している問題・エラーメッセージ

"Class 'Application\Block\ExternalForm\Form\Controller\BlockController' not found"

該当のソースコード

1つ目のファイル form/mail_mag_complete.php <?php // おまじない $form = Loader::helper('form'); defined('C5_EXECUTE') or die("Access Denied."); // フォームヘルパー読み込み if(isset($response)){ ?> <?php echo $resonse?> <?php } ?> <form method='post" action="<?php echo $this->action('test_searcj')?>"> <p><?php echo t("this is an example of how a custom form works.")?></p> <?php echo $form->text('test_text_field')?> <input type="submit" name="submit" value="submit"/> </form> 2つ目のファイル コントローラー form/controller/mail_mag_complete.php <?php // おまじない namespace Application\Block\ExternalForm\Form\Controller; use Concrete\Core\Controller\AbstractController; use Core; use Page; defined('C5_EXECUTE') or die("Access Denied."); // フォームヘルパー読み込み //$form = Core::make('helper/form'); //class mail_mag_complete extends BlockController{ class MailmagExternalFormBlockController extends BlockController{ // フォームヘルパー読み込み //$form = Core::make('helper/form'); //$form = Loader::helper('form'); public function action_mail_mag_submit(){ $val = Loder::helper('validation/form'); $val->setData($this->post()); $val->addRequired('magazine','1つ以上のメルマガを選択してください'); $val->addRequiredEmail('email','有効なメールアドレスを入力してください'); if(!$val->test()){ $errorArray=$val->getError()->getlist(); $this->set('errorArray',$errorArray); }else{ $mh = Loader::helpler('mail'); $adminUserinfo=userInfo::getByID(User_SUPER_ID); if(is_object($adminUserInfo)){ $mh->bcc($adminUserInfo->getuserEmail()); } $mh->addParameter('magazine',$this->post('magazine')); $mh->load('mail_mag_complete'); $mh->sendMail(); $this->set('response','お申込みありがとうございました。'); } return true; } }

試したこと

以下を追加しました、
namespace Application\Block\ExternalForm\Form\Controller;

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2023/01/20 01:51

名前空間なしで読み込んだりはできるのでしょうか。 ※それができてない状態で名前空間使うのは難しいと思います。
believe

2023/01/20 07:16

名前空案なしで試しましたが、以下のエラーメッセージが表示されました。 "Class 'BlockController' not found"
m.ts10806

2023/01/20 08:09

そのクラス定義のあるファイルをrequiireしてないのでは。
believe

2023/01/20 08:23

5.6(レガシー)版ではblockが使えましたが、 5.7以降 (モダン)からAbstractControllerに変わりました。 以下のように書き換えました。 <?php namespace Application\Block\ExternalForm\Form\Controller; use Concrete\Core\Controller\AbstractController; use Core; use Page; class MailMagExternalForm extends AbstractController { エラーメッセージ "Cannot declare class Application\Block\ExternalForm\Form\Controller\MailMagExternalForm, because the name is already in use"
believe

2023/01/20 08:29

<?php namespace Application\Block\ExternalForm\Form\Controller; use Concrete\Core\Controller\AbstractController; use Core; use Page; class MailMag extends AbstractController ビューは表示されましたが、以下のエラーメッセージが表示されました。 Arguments "Class 'Application\Block\ExternalForm\Form\Controller\Loader' not found" -------------------------------------------------- class MailMag extends AbstractController { public function action_mail_mag_submit() { // validation/form ヘルパーを呼び出し $val = Loader::helper('validation/form'); // postデータをバリデーションに登録 $val->setData($this->post()); // 必須項目ルールの追加 $val->addRequired('magazine', '1つ以上のメルマガを選択してください。'); // メールアドレスの検証 $val->addRequiredEmail('email', '有効なメールアドレスを入力してください。'); // テスト実行 if (!$val->test()) { // テストに通らなかった場合はビューにエラーを渡す $errorArray = $val->getError()->getList(); $this->set('errorArray', $errorArray); } else { // テストに通った場合の処理 $mh = Loader::helper('mail'); // FROMアドレスの設定 $mh->from(EMAIL_DEFAULT_FROM_ADDRESS, SITE); // Toアドレスの設定 $mh->to($this->post('email')); // 管理者ユーザー情報を取得 $adminUserInfo = UserInfo::getByID(USER_SUPER_ID); if (is_object($adminUserInfo)) { // 管理者メールアドレスをBCCに設定 Arguments "Class 'Application\Block\ExternalForm\Form\Controller\Loader' not found"
believe

2023/01/21 01:39 編集

編集しました。
m.ts10806

2023/01/20 20:12

解決したように見えないのですが、自己解決としてよかったのでしょうか。 ※解決済みは受付中に戻すこともできたはずなので あと質問は編集できるので、コメントに書かずに本文調整を。
m.ts10806

2023/01/21 02:33

そういえばCMSですか。 その改修となれば結構自己責任なところがあるし、特異なので回答つきにくいかもしれません。 公式もしくは有志のフォーラムを探したほうが良いと思う
guest

回答1

0

自己解決

<?php namespace Application\Block\ExternalForm\Form\Controller; use Concrete\Core\Controller\AbstractController; use Core; use Page; class MailMag extends AbstractController ビューは表示されました。

投稿2023/01/20 09:02

編集2023/01/21 01:36
believe

総合スコア91

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問