Entries


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

-件のコメント

コメントの投稿

新規

※設定NGワードは『http』です

投稿した内容は管理者にだけ閲覧出来ます

-件のトラックバック

トラックバックURL
http://pugiemonn.blog6.fc2.com/tb.php/1383-6adfdab1

CakePHPの練習:ヘルパーからコンポーネントを呼ぶ


CakePHP2.0でヘルパーからコンポーネントを呼ぼうとしたらうまくいきませんでした。

どこかのページを参考にしました。どうやらヘルパーからコンポーネントを使うには、コンポーネントをapp::importしてインスタンスを作るみたいでした。

Viewから呼ばれるModuleHelperというヘルパーの中で、NiconicoApiというコンポーネントをapp::importするようにしました。

以上のように書いて、makeRankingPage()をビューから呼んでみました。

すると
Warning (4096): Argument 1 passed to Component::__construct() must be an instance of ComponentCollection, none given, called in /Library/WebServer/Documents/.../app/View/Helper/ModuleHelper.php on line 22 and defined [CORE/Cake/Controller/Component.php, line 77]
Notice (8): Undefined variable: collection [CORE/Cake/Controller/Component.php, line 78]

エラーがでました。
        ____
      /  ノ  ヽ\
     /  (○)}liil{(○)
   /     (__人__) ヽ
   |       |!!il|l|   | なんだこれわ
   \        lェェェl /
    /         ヽ
    しヽ        ト、ノ
      |    __    |
      !___ノ´  ヽ__丿

construct()はComponentCollectionのインスタンスがなければならないみたいなことが書いてあります。
よくわかりません。

ということでぐぐってみたら似た様な例がありました。

In beforeRender() function, I wrote "App::use()" and "new" operator for make a instance.

When executed, following error appears.

Warning (4096): Argument 1 passed to Component::__construct() must be an instance of ComponentCollection, none given, called in /path-to-cakephp/app/View/Helper/AccessHelper.php on line 12 and defined [CORE/Cake/Controller/Component.php, line 77]

Warning (2): Missing argument 1 for Component::__construct(), called in /path-to-cakephp/app/View/Helper/AccessHelper.php on line 12 and defined [CORE/Cake/Controller/Component.php, line 77]

Notice (8): Undefined variable: collection [CORE/Cake/Controller/Component.php, line 78]

http://ask.cakephp.org/questions/view/how_to_make_a_instance_of_authcomponent_within_the_custom_helper


ということで自分の書いた方をちょっと修正しました。

インスタンスを作るときにnew NiconicoApiComponent(new ComponentCollection());のような感じでnew ComponentCollection()を渡してあげると動くみたいです。

あとviewからヘルパーを呼びましたが、すでにコントローラで$componentsの中に既に定義している場合は、コンポーネントをapp::importしなくてもコンポーネントのインスタンスを作るだけで動くみたいです。

よくわからないけど動くからいいのかな??

でわでわ

0件のコメント

コメントの投稿

新規

※設定NGワードは『http』です

投稿した内容は管理者にだけ閲覧出来ます

0件のトラックバック

トラックバックURL
http://pugiemonn.blog6.fc2.com/tb.php/1383-6adfdab1

Appendix

プロフィール

川崎修

  • Author:川崎修
  • インターネット大好き!
    調布周辺で自宅警備してます



    メール:pugiemonn@gmail.com
    skype:pugiemonn
    twilog:Twilog
    mixi:mixi
    facebook:facebook
My Profile by iddy
FC2ブログ

カレンダー

03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -

最近の記事

Twitter

コミュニティ

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

Adsense

月別アーカイブ

はてぶ数

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。