■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

テーマ【CMS DESIGN】のお問い合わせフォームが表示されない

waves > テーマ【CMS DESIGN】のお問い合わせフォームが表示されない @ 2014/10/13 14:52
現在 【CMS DESIGN】を利用しております。

しかし何故か「お問い合わせフォーム」が表示されないので困っています。


エラー: The requested address '/responsive/CMSDESIGN/index.php/contact/index' was not found on this server.


そこで一応デバックモードで確認したところ、


コントローラがありません

エラー: ContactController が見つかりません。

エラー: クラス ContactController を app/Controller/ContactController.php ファイル内に作成してください。

<?php
class ContactController extends AppController {

}

注意: このエラーメッセージをカスタマイズしたい場合は、 app/View/Errors/missing_controller.ctp を作成してください
Stack Trace

    APP/webroot/index.php line 151 → Dispatcher->dispatch(CakeRequest, CakeResponse)
    ROOT/index.php line 51 → require(string)


との内容が返ってきました。

そこで実際に app/Controller/ContactController.php を確認したところ、
このディレクトリにはContactController.phpが存在していなく、
AppController.phpがありました。

どのようにすればメールフォームが表示されるようになるのでしょうか?
お知恵をお貸しください。


 baserCMS環境

  利用サーバー:ロリポップ

スマートURL: OFF
セーフモード:Off
データベース: SQLite
baserCMSバージョン: 3.0.5.1
CakePHPバージョン: 2.5.3

goichi > Re: テーマ【CMS DESIGN】のお問い合わせフォームが表示されない @ 2014/10/13 22:32
うーん、何ででしょう。素直に考えれば、メールプラグインの設定で、フォーム名を「contact」以外に変更しているとかですが、デフォルトから変更していますか? 
waves > Re: テーマ【CMS DESIGN】のお問い合わせフォームが表示されない @ 2014/10/14 14:10
goichiさん

いえ、それがフォーム名を「contact」以外に変更していないんです。

試しに他に新規ディレクトリを作り、そこに新規でbaserCMSをインストールし、新たに【CMS DESIGN】を導入してみたのですが
やはり同じエラーが返ってきてしまいました。。。

う〜ん・・・。


n1215 > Re: テーマ【CMS DESIGN】のお問い合わせフォームが表示されない @ 2014/10/14 14:51
横やり失礼します。

公式サイトにプラグインのルーティングについて説明した内容があれば参考にと貼ろうかと思ってたんですが……書いてなさそうですね。
下記にプラグインのルーティングの概要をご説明します。

●プラグインのルーティング
baserCMS(CakePHP)のルーティングでは、
あらかじめルーターに複数登録されたルート(要はURLの規則)の中から
ルーターがリクエストされたURLにマッチするものを順番に探して
どのコントローラとアクションを利用するかを決定します。

CakePHPのプラグインのルーティングはデフォルトでは下記規則に従います。
http://example.com/{プラグイン名}/{コントローラー名}/{アクション名}/{パラメータ1}


例)
Mailプラグインの入力フォームのページ:http://basercms.net/mail/mail/index/1
Blogプラグインの投稿一覧ページ:http://basercms.net/blog/blog/index/2



●プラグインのルートのエイリアス(別URL)
デフォルトのプラグインのルートのURLのままだとかなり冗長になりますね。
baserCMSでは短くわかりやすいURLを利用できるエイリアスとなるルート(以下、便宜的に短縮名ルートと呼称します)を追加しています。

plugin_contentsテーブルに、プラグインが管理するコンテンツに対応する名前(以下、短縮登録名)を登録しておくと
http://examplec.ocm/{短縮登録名}/{アクション名}

というエイリアスが利用できます。

例)
Mailプラグインでは仕様として短縮登録名=メールフォームアカウント名になります。
初期状態ではMailプラグインのコンテンツIDが1のメールフォームが"contact"という短縮登録名で登録されています。

これにより先ほどのCakePHPデフォルトのプラグインのURLに加えて、
http://basercms.net/contact/index

というURLでもフォームを表示することができます。

正常にこのルートにマッチした場合、MailプラグインのMailControllerのindexアクションが利用されます。


●症状と原因について
ContactContorollerが見当たらないという表示が出たということは、本来のプラグインの短縮名ルートにURLがマッチせず、
後続の/{コントローラー名}/{アクション名}型のルートにマッチしているはずです。
※ContactControllerなるコントローラーは存在しない状態が正常ですのでご安心を。

方針としてはプラグインの短縮名ルートにマッチしない原因を探ればいいということになります。


●データベースの中身の確認
goichiさんご指摘の方法で解決しないとなると、
まずはデータベースのplugin_contentsテーブルの中身と整合性が取れているかを確認していただくのが良いかと思います。

データベースはSQLiteとのことなので下記を参考にplugin_contentsテーブルの中身をのぞいてみてください。
http://forum.basercms.net/modules/newbb/viewtopic.php?viewmode=thread&topic_id=1648&forum=5&post_id=6201#6201

content_id:1
plugin:'Mail'
name:'contact'

となっているレコード(行)が存在しますか?

Twitter: @n_1215

n1215 > Re: テーマ【CMS DESIGN】のお問い合わせフォームが表示されない @ 2014/10/14 15:00
調べてみましたが、CMS_DESIGNのテーマの初期データにメールプラグイン用のplugin_contentsのデータが含まれてないようですね。
blog用のnewsだけになっています。

app/webroot/theme/cmsdesign/Config/data/default/plugin_contents.csv
"id","content_id","name","plugin","created","modified"
"1","1","news","blog","",""

これが原因でしょう。

app/webroot/theme/cmsdesign/Config/data/default/plugin_contents.csv
"id","content_id","name","plugin","created","modified"
"1","1","news","blog","",""
"2","1","contact","mail","",""

に変えて初期データを読み込めば大丈夫なのではないかと。

Twitter: @n_1215

waves > Re: テーマ【CMS DESIGN】のお問い合わせフォームが表示されない @ 2014/10/14 17:57
n1215さん

詳しい情報等々ご教授して頂き感謝です。

そして、問題の【お問い合わせフォーム】ですが、教えていただいた
通りに”plugin_contents.csv”を修正したところ、無事に
表示することが出来ました!

お時間を取らせてしまい、申し訳ございませんでした。
しかし勉強になりました。

本当にありがとうございました。
waves > Re: テーマ【CMS DESIGN】のお問い合わせフォームが表示されない @ 2014/10/14 18:45
n1215さん

度々申し訳ございません。

ひとつだけ加えて教えて頂きたいのですが、
今回の解決方法では無事にメールフォームが表示できましたが、
CSVを編集した後に、テーマ一覧で”初期データの読み込み”をクリックした時に

初期データを読み込みます。よろしいですか?

※ 初期データを読み込むと現在登録されている記事データや設定は全て上書きされますのでご注意ください。
※ 管理ログは読み込まれず、ユーザー情報はログインしているユーザーのみに初期化されます。


のアラートが表示され、了解し実行しました。

しかし、もしブログ機能に情報や画像などをUPしていたら、その情報は丸ごと消えてしまうものと
認識しているのですが、この状況を回避する事はDBをsqliteで運用している限りは回避できないのでしょうか?
それとも何かしらバックアップとるなどで解決策はあるのでしょうか?

無知な質問ばかりで大変お手数をおかけしますが、
もしお分かりになりましたら、お教え願います。

n1215 > Re: テーマ【CMS DESIGN】のお問い合わせフォームが表示されない @ 2014/10/14 19:16
waves 様

利用するデータベースに関わらず、
今のところbaserCMSにはデータベースの一部のテーブルだけバックアップしたり、初期データの一部だけを読み込んだりする機能はないですよね。

今回のケースで既存のデータをそのままに修正を行うとすると一部手作業が必要になると思います。

0.あらかじめデータベースのデータをバックアップして退避
(MySQL/PostgreSQL→phpMyAdmin,phpPgAdminなどGUIツールを利用するまたはコマンドラインからダンプ、SQLite→ファイル丸ごとコピー)
1.baserCMSのデータメンテナンス機能でバックアップ
2.ダウンロードされたzipを展開
3.{展開したディレクトリ}/baser/plugin_content.csvに1行追加(または他の初期データ用CSVファイルと置き換え)
4.zipに再圧縮
5.データメンテナンス機能でzipをアップロードしデータを復元


その他の方法としては
・メールフォームを一度消して新しく作り直す
・DB(MySQL/PostgreSQL)やDBファイル(SQLite)を直接ツールなどで編集してpluguin_contentsテーブルにデータを追加する
という手も考えられます。

Twitter: @n_1215

waves > Re: テーマ【CMS DESIGN】のお問い合わせフォームが表示されない @ 2014/10/15 9:52
n1215さん

早速のご回答ありがとうございます。

多少の手間はかかりそうですが、あらかじめバックアップの方法が一番現実的かもしれませんね。

近いうちに実験してみます。
その時にまた結果報告をさせて頂きたいと思います。

本当にありがとうございました。

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
45 人のユーザが現在オンラインです。 (44 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 45