在cakephp中使用模型类变量中的用户定义变量

时间:2010-11-08 10:57:39

标签: cakephp

我想在cakephp模型类变量中使用表单变量$ actsAs.Below是一个示例代码。

public $actsAs = array('MeioUpload' => array('doc' => array('allowedMime' => array('application/x-compressed','application/x-zip-compressed','application/zip','multipart/x-zip'),'dir'=>'uploads'.DS.$this->data['User']['foldername'])));

在上面的代码中,我在$this->data['User']['foldername']数组中使用了一个表单变量($actsAs),用于将目录名称传递给meioupload行为。

实现它的写入过程是什么。

3 个答案:

答案 0 :(得分:1)

这个定义是错误的。

您可以从构造函数中设置该数据。

public function __construct($data) {
    $this->actsAs = array('MeioUpload' => array('doc' => array('allowedMime' => array('application/x-compressed', 'application/x-zip-compressed', 'application/zip', 'multipart/x-zip'), 'dir' => 'uploads' . DS . $data['User']['foldername'])));
}

这样的事情可以解决问题。

答案 1 :(得分:0)

我添加了parent::__construct();$this->Behaviors->init($this->alias,$this->actsAs);,效果很好。

以下是修改后的代码:

public function  __construct() {        
    parent::__construct();

    $this->actsAs = array('MeioUpload' => array('doc' => array('allowedMime' => array('application/x-compressed', 'application/x-zip-compressed', 'application/zip', 'multipart/x-zip'), 'allowedExt' => array('.zip'),'dir' => 'uploads' . DS . $_REQUEST['data']['User']['foldername'])));

    $this->Behaviors->init($this->alias,$this->actsAs);         
}

答案 2 :(得分:0)

在这个例子中,我正在从控制器动态改变路径。

代码:

在Controller中(您指定数据以更改$ actsAs变量的值):

$custom_path=’/img/cakephp’;
Configure::write(‘path_var’,$custom_path);

在模型中,您将在构造函数中更改值:

public function __construct($id = false, $table = null, $ds = null)
{
  $path = Configure::read(‘path_var’);
  // change actsAs’s different value according to your need
  $this->actsAs['Upload.Upload']['photo']['path'] = $path;
  parent::__construct($id, $table, $ds);
}

请在创建模型之前写下语句Configure :: write。