• 締切済み

CakePHP の default.ctp に処理を書くには。

CakePHP 初心者です。 現段階で、各 view のテンプレート1つに付き、コントローラーとモデルを用意するということを知りました。また、全体を通しての大元のテンプレートは default.ctp というファイルを用意すれば良いことも知りました。 ですが、常にサイドバーにデータベースより最新10件の投稿を取得し、出力するということがしたい場合、default.ctp に直接コードを書くしかないのでしょうか。default.ctp のコントローラーやモデルを用意することはできないのでしょうか。 とても初歩的な質問になるかと思いますが、ご回答お待ちしております。 面倒でなければ例なども頂けると幸いです。

  • PHP
  • 回答数1
  • ありがとう数3

みんなの回答

  • takubou05
  • ベストアンサー率52% (11/21)
回答No.1

appフォルダの下に app_controller.php app_model.php を置くとすべてのコントローラ、モデルに共通の処理を書くことが出来ます。 例えばapp_controller.phpの beforeFilter ファンクションにアクセスログを取るロジックを記述すれば、 すべてのアクセスに対してアクセスログを取ることが可能になります。

関連するQ&A

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

    • ベストアンサー
    • PHP
  • cakephpのビューの使い方

    cakephpのビューの使い方 windowsxp環境にxamppをインストール php:5.3.1 cakephp:1.2.6 書籍を読みながらcakephpを始めました。 フォームを利用するサンプルを試しています。 コントローラーで変数に値をセットし ビューでの変数の表示方法の記述がよくわかりません。 コントローラで $this->set("result",$result); とし ビューctpで <html> <body> <h1>送信結果</h1> <p><?=$result ?></p> </body> </html> と記述されているのですが、ブラウザには変数が表示されません。 <?php echo $result ?>と書けば表示されるのですが <?=$result ?>という書き方ですとなにも表示されません。 どなたかアドバイスをいただけると助かります。 作成日: 2010年4月2日(金) 21時05分

    • ベストアンサー
    • PHP
  • cakephpのバリデーションについて。

    cakephpのバリデーションについて。 windowsxp環境にxamppをインストール php:5.3.1 cakephp:1.2.6 mysql:5.1.41 書籍を読みながらcakephpを始めました。 現在 フォームで入力された項目に該当する データをmysqlのデータベースで検索後、 結果をビューに表示するものを作っています。 フォームヘルパーを使用し、inputされたデータを コントローラ側で受け、その値をモデルで検索後 ビューへ渡しています。 このようなデータベースに保存は行わない検索だけの場合 フォームに入力されたデータをcakePHPのバリデーション機能 を利用してチェックできるのでしょうか? ビューでは $form->input('form.text1'array('label'=>'検索対象1')); $form->input('form.text2'array('label'=>'検索対象2')); としています。 このform.text1とform.text2について未入力の場合など エラーチェックが行いたいです。 そもそもこのような場合のエラーチェックは コントローラーに処理を記述しバリデーションは利用しないのかなど、 どなたかアドバイスいただけると助かります。

    • ベストアンサー
    • 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のディレクトリ構成について(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
  • CakePHP 1.3について

    CakePHPが初心者です。 Views-userdetail-index.ctpにて <?php echo $form->create(null,array('type'=>'get','action'=>'./updateRecord')); ?> ~ <?php echo $form->textarea("User.remarks", array("cols" => 22,"rows" => 2)); ?> ~ を記述し、userdetail_controllerにて function updateRecord(){ if (!empty($this->data)){ $this->User->id = 1; $this->User->saveField('remarks','exists'); } else { $this->User->id = 1; $this->User->saveField('remarks','empty'); } $this->redirect('.'); } を記述しています。 しかし、どうしても「!empty($this->data)」の判別によってemptyとなってしまいます。 User.remarksの部分をUserdetailにして色々ためしましたが、どうしても値の受け渡しがうまくいかないのです。 どなたかご教授を宜しくお願い致します。

    • ベストアンサー
    • PHP
  • CakePHPでの自作関数保存場所

    PHP 5.0.4 CakePHP Version1.1 CakePHPのモデル内でコールバック関数として登録したい関数を作成したのですが、その関数をどこに記述してよいか分かりません。今のところ下記のようにモデル内のクラス定義の外に定義しています。 <?php class Hoge extends AppModel { var $name = "Hoge"; function gethoge(){ ・・・・ return array_map("hoge_callback",$hoge_array); } } function hoge_callback(){ ・・・・ } ?> ただこれだと”hoge_callback()”を他のモデルでも使いたい時にそのモデル内でも記述しないといけません。どこか1箇所にまとめて置いてきそれを参照するようなスマートな方法はないでしょうか(できればモデル内だけでなくコントローラやビューでも使えるとうれしいです)?「CakePHPでは自作関数は”ここ”に登録する」といったようなルールがありましたらご教示頂ければ幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • CakePHPのsyntaxエラーについて

    お世話になります。 CakePHPでサイト構成をしています。 教本に従ってコードを書いています。 最も簡単なサイトを作るという章で、MyPagesContorllerを作り、Viewにindex.ctpとedit.ctpを作り、ModelにUser.php、 ContollerにUsersController.phpを作りました。 ユーザーの一覧表示まで出来ましたが、編集機能を作るところでつまずいてます。 UsersController.php <?php class UsersController extends AppController { //モデルの指定(users) public $uses = array('User'); //レイアウトの指定(defaultの場合はなくても動作する) public $layout = 'default'; //indexアクション public function index () { $userData = $this->User->find('all'); //Viewにデータを送る $this->set('userData', $userData); } } //editアクション public function edit($id = null) { if($this->request->isPost() || $this->request->isPut()) { if(!empty($this->data)) { if($this->User->save($this->data)) { $this->Session->setFlash('保存しました'); $this->redirect(array('action' => 'index')); return; } } 下記の様なエラーが表示されてしまいます。 Error: syntax error, unexpected 'public' (T_PUBLIC) 本にある通りに記述して、何度も確認しましたが間違いが見つけられません。 写真に添付しているline20の前後を見ても特にミスは無い様に思えます どこが間違っているのでしょうか。。。 ちなみにeditアクションのソースを消すと、エラーは表示されません。 どなたかご教授頂けないでしょうか。 宜しくお願いいたします。

  • cakephpの質問2つ

    2つ質問させてください。 cakephpで、ホームページの左に項目を追加したいのですが (ホームページによくあるホームページ内リンク、ホームページ内の検索フォーム)、 layoutで指定できるのは、調べた限り、$title_for_layoutと$content_for_layoutだけでした。 当然、コントローラで取得した値は、メインの真ん中にしか、適応できず、左に適応させると、 今度はメインの真ん中の処理ができなくなってしまいます。 $content_for_layoutなどの変数(例:$sub_content_for_layout)を別個作る必要があるのでしょうか。また、そうであれば、 どのファイルに追記する必要がありますか。 コントローラで、ある変数を条件にfind()で1件だけレコードを取得して、そのデータをviewで使いたいのですが、 setした$dataの構造が確認できず、$arr['id']などの情報が取得できません。$data['テーブル名']としてviewに書くと、 すべてのカラムがAと表示され、うまくいきません。 controller: public function index(){ $cond = param['url']['name']; $data = $this->Table->find($cond); } view hoge.ctp: $arr = $data['Table']; foreach($data as $key){ echo $arr['id']; echo $arr['name']; echo $arr['phone']; } 以下、html~ 本やネットなどで調べましたが、当該情報が得られませんでした。お手数ですが、ご回答願えないでしょうか。

    • 締切済み
    • PHP

専門家に質問してみよう