我想知道如何从ajax调用从视图到zend控制器获取数据并使用zend table函数保存它。所以下面是我的代码。
这是我的控制器
public function addAction(){
$image_uri = $this->getRequest()->getPost('image_uri');
$personalmug = new PersonalMug();
$personalmug->exchangeArray($image_uri);
$this->getPersonalMugTable()->save($personalmug);
}
这是我的ajax代码。
$('#buttonSave').click(function (){
var image_uri = $("mug1").attr("src");
$.ajax({
type: 'POST',
dataType: 'json',
url: 'http://toxicfox.com/personal-mug/add',
async: false,
// you can use an object here
data: { image_uri: image_uri},
success: function(json) {
console.log(json.image_uri);
}
});
// you might need to do this, to prevent anchors from following
// or form controls from submitting
});
这是我在zend table class中的保存函数。
public function save(PersonalMug $personalmug){
$data = array(
'image_uri' => $personalmug->image_uri,
);
$image_id = (int) $$personalmug->image_id;
if($image_id == 0){
$this->tableGateway->insert($data);
}else{
if($this->getImage($image_id)){
$this->tableGateway->update($data, array('image_id' => $image_id));
}else{
throw new \Exception('Mug id does not exist');
}
}
}
这是我的模特课
class PersonalMug{
public $image_id;
public $image_uri;
public function exchangeArray($data){
$this->image_id = (!empty($data['image_id'])) ? $data['image_id'] : null;
$this->image_uri = (!empty($data['image_uri'])) ? $data['image_uri'] : null;
}
}
答案 0 :(得分:0)
我找到了解决方案,我有一些小错误,我插入字符串而不是obeject。我希望它也能帮助别人。下面是控制器代码纠正了小错误,现在工作正常。 错误。
我在personalmugtable中使用了refrenced变量,
$ image_id =(int)$$ personalmug-> image_id;
我没有在jquery中使用#sybmol,
var image_uri = $(" mug1")。attr(" src");
我是在控制器中插入字符串而不是对象。
public function addAction(){
$ data [' image_uri'] = $ this-> getRequest() - > getPost(' image_uri'); $ personalmug = new PersonalMug(); $ personalmug-> exchangeArray($数据); $这 - > getPersonalMugTable() - >保存($ personalmug); 返回$ this-> redirect() - > toRoute(' personal-mug');
}