しかし、
”Error: Create the class SamplesController below in file: app\controllers\samples_controller.php”
とエラー表示されて、アプリケーションは正しく動作しません。
cake本体を設置したフォルダの app\controllers 下部には
samples_controller.php
が正しく設置され、
クラス名も下記のように正しく記入されています。
<?php
class SamplesController extends AppController {
var $name = 'Samples';
}
?>
プリフィックスルーティング関連の問題かと考え、
core.phpに下記を追加しましたが、動作は変わりません。
(このアプリケーションは、adminルーティングを利用しています)
Configure::write('Routing.admin', 'admin');
そんなに複雑なことをしているアプリケーションではないので、
単純なポイントだと思います。
この問題を解決するために、何かヒントを頂けましたら有難く存じます。
環境は、下記の通りです。
Windows XP Professional SP3
xampp 1.7.2
どうぞよろしくお願い致します。
まず、エラーとは関係がありませんが、「Routing.admin」は非推奨になったそうです。
Router
Routing.adminは非推奨となりました。これはprefixが異なるルーティングの方式では、矛盾した振る舞いを提供していました。代わりにRouting.prefixesを使用すべきです。1.3のprefixルートは手動でルート定義を追加する必要がありません。全てのprefixルートは自動で生成されます。シンプルに変更するには、core.phpを変更してください。
http://book.cakephp.org/ja/view/1561/Migrating-from-CakePHP-1-2-...
そのまま上記のページの解説の続きを確認してください。
また、ルーティングパラメータに小さな変更があります。ルーティングパラメータは今や英数字と「-」、「_」または/[A-Z0-9-_+]+/から成るべきです。
Router::connect('/:$%@#param/:action/*', array(...)); // BAD
Router::connect('/:can/:anybody/:see/:m-3/*', array(...)); //Acceptable
1.3のために、Routerの内部はパフォーマンス向上とコードの乱雑さを減らすために大規模に書き直されました。この副作用として、コードの基幹部分にあることと引き換えに、問題的でありバグを引き起こしやすかった二つのまれにしか使われない機能が削除されました。まず、フル正規表現を使うパスセグメントが削除されました。もう次のようなルートは作れません。
Router::connect('/([0-9]+)-p-(.*)/', array('controller' => 'products', 'action' => 'show'))
上記の変更が原因になっていると思います。
「routes.php」の記述を見直してみてください。
コメント(2件)
原因は分かりましたか?
いろいろ試してみたのですが、こちらでは同様の状態でのエラーは発生しないため、はっきりとした原因はつかめません。
他にも1.3(安定版)で動作しないルーティングの設定を見つけましたので、一応ご報告します。
Router::connect('/m/:controller/:action', array('prefix' => 'mobile', 'mobile' => true));
※urlとprefixを同じにして「Router::connect('/mobile/:controller/:action', array('prefix' => 'mobile', 'mobile' => true));」のようにすると動作しますが、routes.phpに設定するよりcore.phpの方で、「Configure::write('Routing.prefixes', array('admin', 'mobile'));」のようにする方が良さそうです。(※モバイル用にルーティング設定している場合)
他には回答に記載したページでも説明されていますが、次のようなルートの中間でのワイルドカードのサポートは削除されています。
Router::connect(
'/pages/*/:event', ~
「http://www.example.com/samples」にアクセスした場合に『Error: Create the class SamplesController below in file: app\controllers\samples_controller.php』が発生するのでしょうか?
それとも「http://www.example.com/admin/samples」にアクセスした場合にエラーが発生するのでしょうか?
もう少しエラー発生状況や使用している機能等を出した方が、分かる人がいるかもしれません。
routes.php
の記述に問題があった模様です。
cakeを全てhtdocs下部に配置し、routes.php を修正することで
正しく動作しました。
親切にご対応頂きまして、誠に有難うございました。