質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

2回答

2078閲覧

Cakephp2のコントローラがもつactionを取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2015/12/08 09:12

いつも参考にさせていただいてます。

タイトルのとおりなのですが、Controller名を指定してその中にある全function名を取得したいと思っています。

たとえばCompaniesを渡せば

  • beforeFiilter
  • index
  • add
  • edit

を返して欲しいです。

スクリプト組めばできると思うのですが、Cakephpのことなので便利機能として持っているかなーと思い質問いたしました。

検索してみたのですが見つけられず、ご存知の方がいましたらご回答お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

controllerのインスタンスを作成して、そのインスタンスのmethodsで示される配列の中にそのcontroller内のメソッドが格納されていますが、これでいかがでしょうか?

PHP

1App::uses('HogeController', 'Controller'); 2 3class FugaController extends AppController { 4 $hoge = new HogeController(); 5 print_r($hoge->methods); 6}

投稿2015/12/08 09:58

編集2015/12/10 03:34
KatsumiTanaka

総合スコア924

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/12/10 02:40 編集

KatsumiTanakaさん ご回答ありがとうございます。 これは他のクラス内では起動しないのでしょうか?CompaniesControllerで、UsersControllerがもっているactionを取得したい場合は使えませんか? 試してみたところ Fatal error: Class 'UsersController' not found となってしまいました。..
KatsumiTanaka

2015/12/10 03:35

サンプルコードを修正しましたが、App::usesで参照したいcontrollerを指定しないと、そのcontrollerの中で別のcontrollerの参照はできません。
退会済みユーザー

退会済みユーザー

2015/12/10 03:39

なるほど。。。 各メニュー(action単位)で管理しなくちゃいけなくなったのでControllerを指定したら中に持っているactionを取得する方法を探していたんですがうまく使えなさそうですー。 ありがとうございました!
guest

0

クラスが持つメソッドを取得するには Reflection か get_class_methods を使うくらいしか方法はないので、 cakePHP のソースを丸ごと grep でもすれば、(あれば)見つかるのではないでしょうか。

投稿2015/12/08 09:18

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/12/10 03:00

Kosuke_Shibuyaさん ご回答ありがとうございます。 Reflectionって聞いたことありませんでした。調べてみたらReflectionClassのgetMethodsでやりたいことができそうです! 助かりました~ありがとうございました
退会済みユーザー

退会済みユーザー

2015/12/10 03:40 編集

だめだ・・・。だめでした。親コントローラか自分の持っているアクションしか取得できませんね。 別の方法探します。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問