CakePHPのディレクトリ構成について(app)

このQ&Aのポイント
  • CakePHPのディレクトリ構成について説明します。
  • バージョンによってappディレクトリのディレクトリ名に違いがあります。
  • 公式ドキュメントのapp内のディレクトリ名と実際のディレクトリ名が異なる場合もあります。
回答を見る
  • ベストアンサー

CakePHPのディレクトリ構成について(app)

CakePHPのapp内のディレクトリ名について教えてください。 CakePHPを使ってみたいと思いインストールまで実行しました。 作成したプログラムはappディレクトリ内に配置するようですが、 公式ドキュメントとapp内のディレクトリ名が違います。 バージョン:CakePHP ver 2.0.3 安定版 Cookbook(公式ドキュメント)を見ると 「2.3 CakePHPのフォルダ構造」 http://book.cakephp.org/ja/view/899/CakePHP%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E6%A7%8B%E9%80%A0 Appフォルダは controllers libs models views ・・・ と記載してあります。 実際にappディレクトリを見てみると Controller Lib Model View ・・・ というように始めの文字が大文字になっていて複数形がなくなっています。 これはバージョンの違いによるものなのでしょうか? 公式ドキュメントでappのcontrollerディレクトリにファイルを作ってアップロードとなっていたら、実際にはappのControllerディレクトリにファイルをアップロードすれば良いのでしょうか? それとも、Controllerディレクトリとは別にマニュアルと同じ名前controllerディレクトリを作成してその中にファイルをアップロードするのでしょうか?

  • PHP
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ディレクトリの命名規則は2.0から変更になっています。 2.0のドキュメントは、こっちです。残念ながら、まだ英語版しかないかもですが。 http://book.cakephp.org/2.0/en/ また、フォルダ名などの命名規則の変更については以下に記載があります。 http://book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html?highlight=directory

hpmt28
質問者

お礼

monsterpearさん ご回答ありがとうございます。 2.0から命名規則が変わっているんですね。 上記のリンク先で内容を把握してみたいと思います。 ありがとうございました。

その他の回答 (1)

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

cakePHP 2.0ドキュメントでは、「2.0移行ガイド」のみ和訳されています。こちらをまずお読みください。 http://book.cakephp.org/2.0/ja/appendices.html 英文のドキュメントを読むのがきついようなら、cakePHP1.3 の方をダウンロードしなおせば、和訳1.3ドキュメントに沿ってやれると思います。

hpmt28
質問者

お礼

monsterpearさん ご回答ありがとうございます。 2.0は日本語の情報がまだ少ないみたいですね。 これからCakePHPを始めるのでひとまず情報の多い1.3で始めてみようと思いました。 2.0で変更になる点も注意しながら進めたいと思います。

関連するQ&A

  • CakePHP のディレクトリの構成について

    現在 CakePHP を勉強しています。 最初から壁にぶち当たってしまいました。 参考にしているサイトの内容は以下のようになっているのですが apps/app1 と www/app1 の関係がよくわかりません。 シロート的なイメージとして、CakePHP では apps/app1 で色々と作成したものが(自動的に)www/app1 に複写される。 そしてブラウザからのアクセスは www/app1 になる???? そんなイメージなのですが、その辺を含めて勘違いしていると思います。 この2つのディレクトリの意味と用途?を教えてもらえないでしょうか? +/home/example ・・・ ホームディレクトリ   |   +cake ・・・ cake ディレクトリ   |   +apps ・・・ CakePHPで作成するアプリケーション用ディレクトリ   | |   | +app1 ・・・ CakePHPで作成するアプリ1のappディレクトリ   | | |   | | +config, docs, libs, scriptsディレクトリとファイル   | |   | +app2 ・・・ CakePHPで作成するアプリ2のappディレクトリ   |   |   |   +config, docs, libs, scriptsディレクトリとファイル   |   +www ・・・ ウェブで公開されるディレクトリ(DocumentRoot)     |     +app1 ・・・ CakePHPで作成するアプリ1 の webroot     |     +app2 ・・・ CakePHPで作成するアプリ2 の webroot     |     +other ・・・ CakePHP以外のアプリを使う場合のディレクトリ

    • ベストアンサー
    • PHP
  • CakePHPでディレクトリ分けをしたい

    CakePHP2.3.4、サーバーはロリポップにて開発を行っております。 やりたいことは、コントローラーのディレクトリ分けです。 以下のようなディレクトリ構造にして、 app  |_Controller  |   |_admin  |    |    |_LoginController.php  ※メソッドはindex()のみと仮定  |    |    |_・・・.php  |    |  |    |_ListController.php  ※メソッドはindex()のみと仮定  |  |_View ※Viewも分けますが、今は省略しています。 アプリケーション「LoginCntroller.php」にアクセスする場合は http://○○.ne.jp/admin/login/index アプリケーション「ListController.php」にアクセスする場合は http://○○.ne.jp/list/index でアクセスしたいです。 自分なりに調べて、「bootstrap.php」に以下追加、 App::build(array(  'Controller' => array(ROOT.DS.APP_DIR.DS.'Controllers'.DS.'Admin'.DS,) )); 「route.php」に以下追加、 Router::connect('/admin/login', array('controller' => 'login', 'action' => 'index')); などと行ってみてはいるのですが、結果、以下のエラーになってしまいます。 Missing Controller Error: AdminController could not be found. Error: Create the class AdminController below in file: app/Controller/AdminController.php <?php class AdminController extends AppController { } Controller直下に配置したアプリケーションに関しては問題なく実行されます。 何が悪いのか見当もつかず困っております。 よろしければご教授いただけませんでしょうか。

    • 締切済み
    • PHP
  • CakePHPでヘルパーが使えません

    CakePHPを使用して開発を行っています。 app/views/helpers/common_lib.php に、class CommonLibHelper extends AppHelper としてヘルパークラスを作り、コントローラーの$helpersにarray('CommonLib')を記述しました。 ビューファイルにて、$common_lib->function() として、ヘルパーで定義したメソッドを呼ぶと、 undefined variable: common_libと言われてしまいます。どうしてか教えていただけませんか? クラス名やファイル名は合っていると思うのですが・・・。 CakePHPのバージョンは、1.3.6です。

    • ベストアンサー
    • PHP
  • Cakephp AppControllerについて

    CakePHPにて、 AppControllerクラスに処理を記述しようと思い、 app/app_controller.php を設置したのですが、 app/app_controller.php がどうしても呼び出されません。 色々調べてるのですが、どうしても原因が分かりません。 原因等分かる方がおりましたら教えて頂けますでしょうか? ---------------------- ■cakephpのバージョンは1.3です。 ■app/app_controller.phpの中身は↓です。 class AppController extends Controller { function __construct() { parent::__construct(); } function beforeFilter() { echo "test"; ←これが呼ばれない。 } } ----------------------

    • ベストアンサー
    • PHP
  • cakephpの命名規則について

    cakephp初心者です。 cakephpはテーブル名、モデル名、コントローラ名、ビュー名、が規則によって付けられますが、 複数人で開発する場合、 同じテーブルを参照しようとすると、同じ名前のビューフォルダなどが出来てしまうのではないですか? テーブル名:users モデル名:User コントローラ名:UsersController ビューフォルダ:Users   ビューファイル:index.ctp usersテーブルを参照する場合、みんな同じコントローラ名、そして、ビューフォルダ名になると思うのですが、 どうやって別々のページを作っていくのですか? 上手く質問出来ていませんし、勉強不足だとは承知しています。 どうしてもCakePHPに苦戦しています。 開発の進め方を出来るだけ分かりやすく説明して頂けると嬉しいです。

    • ベストアンサー
    • PHP
  • CakePHPのfindAllByの使い方

    先週からCakePHPの勉強を始めました。公式ドキュメントを見ながら少しずつ試しています。今はfindAllByを試しているのですが、サンプルどおりに記述してもうまく動きません。使用してるCakePHPのバージョンはほぼ最新の2.5.5です。 データを取得する — CakePHP Cookbook 2.x ドキュメント http://book.cakephp.org/2.0/ja/models/retrieving-your-data.html#findallby ◎findAllBy<x> サンプル # $this->User->findAllByEmailOrUsername('jhon'); と書くと ◎対応するSQL # User.email = 'jhon' OR User.username = 'jhon'; となると書いてあります。しかしこうはならず # User.email = 'jhon' OR User.username = null; というSQLになってしまい、当然検索結果も期待する結果になりませんでした。 試行錯誤した結果 # $this->User->findAllByEmailOrUsername('jhon', 'jhon'); と書けば、公式ドキュメントに書いてあるとおりのSQLが作成され、検索結果も期待する結果になりました。 プログラムの内容としては、ほぼブログチュートリアルと同じでそこに検索方法だけ変えただけです。すなわち「find('all')」から「findAllByEmailOrUsername('jhon')」などのように。 findAllByについて ・公式ドキュメントが間違っているのでしょうか? ・バージョンによって挙動が異なるのでしょうか? ・私の使い方や設定が間違っているのでしょうか?  というか、何かの設定によって使い方を変えることができるのでしょうか? この点について教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • CakePHPでのログイン画面生成について。

    CakePHPでのログイン画面生成について。 参考URLは以下です。 http://h2o-space.com/blog/1950 以上の記事の通り設定・アップロードをし、 add.phpにアクセスすると Missing Method in ViewsController Error: The action add.php is not defined in controller ViewsController Error: Create ViewsController::add.php() in file: app/controllers/views_controller.php. <?php class ViewsController extends AppController { var $name = 'Views'; function add.php() { } } ?> とのエラーが出ます。 <?php class ViewsController extends AppController { var $name = 'Views'; function add.php() { } } ?> をviews_controller.phpに書き込むと Parse error: syntax error, unexpected '.', expecting '(' in /home/rslitefc2/users/アカウント/public_html/login/app/controllers/views_controller.php on line 7 と、エラーが出ます。 7行目の記述はfunction add.php() {です。 どうしたらログイン画面を正しく生成することが出来るでしょうか? どなたかお教えいただければ幸いです。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • cakephpのデフォルトのページ設定

    cakephp初心者です。 色々なサイトのインストール手順を見て、 apacheでドキュメントルートを設定した、 /var/www/html/cakephpとして、cakephpのファイルを配置しました。 ブラウザからアクセスすると http://localhost/cakephp/自分の作成したディレクトリ というアクセス方法になります。 今は自宅の仮想サーバに入れていますが、もし外部のサーバに入れてドメイン名がついた場合、 http://ドメイン名/cakephp になってしまいますよね? http://ドメイン名 で、/var/www/html/cakephpにアクセスできるようにするには、 どのようにしたらいいのでしょうか。 現在、 http://ドメイン名 を打つと、cakephpのデフォルトの Release Notes for CakePHP 2.5.8. がタイトルのページが表示されています。 ここをデフォルトのページではなく、こちらで用意したViewのctpファイルを表示させてControllerで制御したいのです。

    • 締切済み
    • PHP
  • cakePHP使用時におけるクラス

    お世話になっています。 cakePHP使用時におけるApp:import()の使用法について質問します。 したいのが、他クラスをController内で呼び出したいのですが、 可能なのでしょうか? viewテンプレート内で呼び出しているようなのですが、本来view内で呼び出すものなのでしょうか? 例とし、 コントローラ時に渡されてきた値が、1,2,のとき common/Category.phpでそれに応じて「one」、「two」を返して、 viewに渡す つまり、 SampleController extends Controller { public index() { //ここでApp:import()したい App:import(); //common/categoryクラスのインポート Category cate = new Category(2); //ここでの値をviewに渡す(略) } } public class Category { private $key; public _construct(num){ if(num == 1) { $key="one"; else if(num == 2) { $key="two"; } else { $key="zero"; } return $key; } } 参考にしたURLは、 http://book.cakephp.org/ja/view/499/The-App-Classです。 全体として、App:import()でクラスを呼び出す場合は、 controller/view/model/behaivior/helperクラスでないとできないのでしょうか? また、App:import()が使用できるのは、view内だけなのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • CakePHP で、質問させていただきます。CakePHPは、初心者で

    CakePHP で、質問させていただきます。CakePHPは、初心者です。 app/controllers のコントローラ「mobilehellow_controller.php」で、以下のようにデータをセットして、DBにインサートしようとしていますが、何もDBには追加されません。 $saveData = array( "NUM" => $item[$hscan_offset]['kyujin_syokusyu'], "JOBTYPE" => 'kyujin_syokusyu', )); $this->Mobilehellow->create(); $this->Mobilehellow->save($saveData); 画面上には、こんな文字が表示されました。 Query: INSERT INTO "mobilehellows" ("NUM") VALUES ('nextval(''"helloworkmobilep01_NUM_seq"''') DBの構成はこれです。 NUM integer NOT NULL JOBTYPE text エラーも何も出なので、どうしてなのかわかりません。 どうか、ご存知の方お教えください。

    • ベストアンサー
    • PHP

専門家に質問してみよう