我想创建ImageBehavior来上传和保存图像.我的行为有两个字段:imagePath和imageField.在我的模型中,我写道:
public function behaviors(){
return array(
'imageBehavior' => array(
'class' => 'ImageBehavior',
'imagePath' => 'images/avatar-pics/'.$this->user->username,
'imageField' => 'avatar',
),
);
}
但这不起作用 – 我收到路径 –
images/avatar-pics//image.png
什么解决方案?在行为字段imageFolder中创建并添加到config’imageFolder’=> ‘用户>用户名’?谢谢.
解决方法:
作为建议:
更改您使用行为的方式并向模型添加一些代码.看一下下面的例子:
例如,您的行为:
class ImageBehavior extends CBehavior {
public $imagePath;
public $imageField;
public function getimagePath() {
return $this->imagePath;
}
}
你的型号:
class TestModel extends CFormModel {
private $imagePath = '/home/x/y';
public function setimagePath($imagePath) {
$this->imagePath = $imagePath;
$this->attachBehaviors(array(
array(
'class' => 'ImageBehavior',
'imagePath' => $this->imagePath
)
));
}
public function init() {
$this->setimagePath($this->imagePath);
parent::init();
}
}
现在,看看测试和结果:
$model=new TestModel();
CVarDumper::dump($model->getimagePath()); //output: /home/x/y
$model->setimagePath('/home/x/path2');
CVarDumper::dump($model->getimagePath()); //output: /home/x/path2
$model->setimagePath('/home/x/path3');
CVarDumper::dump($model->getimagePath()); //output: /home/x/path3
通过这种方式,如果您没有设置任何imagePath,它将使用模型的默认值.在前面,每次更改imagePath时,您的路径都会改变您的行为.
注意:这只是一个建议.通过这种方式,您可以自定义setimagePath方法以从任何位置获取值(另一个模型,会话等等).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。