2010-11-08 78 views
0

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

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']))); 

在上面的代码我有$actsAs阵列中使用的形式的变量($this->data['User']['foldername'])用于使目录名meioupload行为。

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

回答

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']))); 
} 

这样的事情可以做到这一点。

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);   
} 
0

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

CODE:

在控制器(如果你指定的数据修改$ 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。