こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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"; ←これが呼ばれない。
}
}
----------------------

投稿日時 - 2011-10-13 18:20:19

QNo.7069387

困ってます

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

Ver1.3の仕様でコメントしてましたが、Ver2.0 RCでしたか。
こちらの無駄なコメントでしたね。

>3)のAppController.phpは呼ばれているようです。

これで解決しましたね。

Ver.2.0の仕様はVer1.3と違います。(命名規則など
当方Ver2.0の仕様は完全に把握していない為、これ以上のサポートは無理なので、ご了承ください。

これから即開発する場合ならVer1.3で、これから勉強するのなら、Ver2.0をお勧めします。
大きく仕様が変わりますが、Ver1.3からVer.2.0の移行手順が公開されるかと思いますので、情報量が多いVer1.3を学習し、Ver2.0が正式にリリースされたら、それに移行するのも「あり」かと思います。

がんばってください。

投稿日時 - 2011-10-14 15:47:24

お礼

色々ご回答ありがとうございました。
大変助かりました。
まずは1.3で開発していき、2.0の情報が多くなった段階で2.0に移行しようと思います。

投稿日時 - 2011-10-14 21:31:03

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

違うディレクトリーにあるAppController が呼び出されているのかな。

app/app_controller.php のファイルにPHPエラーがでるような処理を組み込んで、PHPエラーがでますか?

ちなみに、[app/直下|app/libs/|app/controllers/] に[app_controller.php] が無ければ、デフォルトの[cake/libs/controller/app_controller.php] が呼ばれます。

投稿日時 - 2011-10-14 12:59:41

補足

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

cakephpのバージョンについて、1.3と申し上げましたが、
再度確認したところ、2.0.0-RC1 でした。
申し訳ございません。。

特にバージョンが2.0じゃなければいけない理由が無いので、
1.3をインストールし直した方がいいでしょうか?

一応、現状調べた結果は↓です。

>app/app_controller.php のファイルにPHPエラーがでるような処理を組み込んで、PHPエラーがでますか?
色々試しましたが、PHPエラーは出ませんでした。

[cake/libs/controller/app_controller.php] は無いのですが、
ドキュメントルート直下で
find . -type f -name "*"php | xargs grep -l "class AppController"
をしたところ↓の4ファイルが出てきました。

1)./app/app_controller.php
2)./lib/Cake/Console/Templates/skel/Controller/AppController.php
3)./lib/Cake/Controller/AppController.php
4)./lib/Cake/Test/Case/TestSuite/ControllerTestCaseTest.php

3)のAppController.phpは呼ばれているようです。
(echo したら表示されました。)

投稿日時 - 2011-10-14 14:49:38

ANo.2

class HelloController extends AppController {

public $uses = null;
public $autoRender = false;

function index()
{
echo 'hello world!';
}

function beforeFilter()
{ 
parent::beforeFilter();
}
}

このようにしてますよね?

投稿日時 - 2011-10-14 10:52:32

補足

ご回答ありがとうございます!
コントローラは↓のように作っております。
$autoRender = false は記述しておりませんでしたので記述したところ
画面が真っ白になったため、ひとまずコメントしてます。

<?php
class RanksController extends AppController
{
var $name = 'Ranks';
var $uses = array( 'Rank' );
var $helpers = array( 'Html', 'Form' );
var $components = array();
//public $autoRender = false;

function beforeFilter()
{
parent::beforeFilter();
}

function index( $date = null )
{
// 処理
}
}
?>

投稿日時 - 2011-10-14 11:22:20

ANo.1

AppControllerを継承するコントローラクラスに、

function beforeFilter() {
 parent::beforeFilter();
}

を記載してください。
オーバーライドするだけです。

投稿日時 - 2011-10-13 22:17:20

補足

ご回答ありがとうございます!
app/app_controller.php を設置し、
↓の記述をしているのですが、

function beforeFilter() {
 parent::beforeFilter();
}

そもそもapp/app_controller.phpに通っていないようです。

function beforeFilter() {
 parent::beforeFilter();
echo "test";exit; // ←←★
}

のようにechoしても、何も表示されないのです。。

投稿日時 - 2011-10-14 10:13:29