CakePHP actsAsをControllerから上書きしたい


CakePHPの画像アップロードプラグインUploadPackを使用しています。
https://github.com/szajbus/uploadpack

画像の拡張子やファイルサイズのアップロードに関するvalidate は簡単にController側から上書き出来るのですが、Modelに書いた$actsAsはControllerから上書きすることがどうしても出来ません。

■user Model
class User extends AppModel {
var $name = 'User';
var $actsAs = array(
'UploadPack.Upload' => array(
'avatar' => array(
'path' => 'webroot/img/:id/shop_banner.gif'
)
)
);
}
■usersControllers.php
微妙にディレクトリを変えたい
$this->User->actsAs = array(
'UploadPack.Upload' => array(
'avatar' => array(
'path' => 'webroot/img/shop/:id/shop_banner.gif'
)
)
);

なお、debug($this->User)とすると、controllerで指定したpathに上書きがかかっているように見えるのですが、最終的にアップロードされるディレクトリはModelでの指定した方になってしまいます。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/01/28 11:40:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答0件)

回答はまだありません

  • id:kanonji
    >http://book.cakephp.org/2.0/en/models/behaviors.html#using-behaviors>
    We can also use the load method to override behavior settings:

    >|php|
    // We will change one setting from our already attached behavior
    $this->Category->Behaviors->load('Tree', array('left' => 'new_left_node'));
    ||<
    <<

    実際に動かして確認してませんが、これでControllerからBehaviorの設定を変えられるような、説明がありました。


    https://github.com/cakephp/cakephp/blob/2.2.5/lib/Cake/Model/Model.php#L737
    https://github.com/cakephp/cakephp/blob/2.2.5/lib/Cake/Model/BehaviorCollection.php#L67
    https://github.com/cakephp/cakephp/blob/2.2.5/lib/Cake/Model/BehaviorCollection.php#L104

    $actAsに書いたBehaviorは、Model::__construct()からBehaviorCollection:: init()が呼ばれ、上記と同様にBehaviorCollection::load()が呼ばれる流れで、読み込まれている様なので、多分これで出来ると思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません