Хорошо, я решил исправить это с помощью PHP. Теперь, когда вы попадаете на страницу, она вызывает:
http://url/module/controller/check/id/$id/object/$object_name
и ajax'd это в мой div. Затем, если его щелкнуть, он идет и помещает возвращаемое значение в HTML
http://url/module/controller/toggle/id/$id/object/$object_name
Класс:
<?php
class User_SubscriptionController extends Zend_Controller_Action {
function init() {
$contextSwitch = $this->_helper->getHelper('ForceContext');
$userSess = new Zend_Session_Namespace('User');
$this->user = $userSess->model;
$this->id = $this->_getParam('id');
$this->object_name = $this->_getParam('object');
if (empty($this->id) || empty($this->object_name)) {
throw new exception('Id and Object name must be passed');
}
}
public function checkAction() {
$subscription = Eurocreme_Baseclass::load_by_fields(array('object_name' => $this->object_name, 'object_id' => $this->id, 'user_id' => $this->user->id, 'table_name' => 'Subscription'), 1);
if (is_object($subscription)) {
echo 'Click To Un-Susbscribe';
} else {
echo 'Click To Subscribe';
}
exit;
}
public function toggleAction() {
$subscription = Eurocreme_Baseclass::load_by_fields(array('object_name' => $this->object_name, 'object_id' => $this->id, 'user_id' => $this->user->id, 'table_name' => 'Subscription'), 1);
if (is_object($subscription)) {
$subscription->delete();
} else {
$subscription = Eurocreme_Baseclass::create(array('object_name' => $this->object_name, 'object_id' => $this->id, 'user_id' => $this->user->id, 'table_name' => 'Subscription', 'frequency' => 1));
}
$this->checkAction();
}
}
и код вида:
<?php $this->headScript()->captureStart(); ?>
$('document').ready(function() {
$.get('/user/subscription/check/id/<?php echo $this->object->id; ?>/object/Movie', function(data) {
$('#subscription_link').html(data);
});
$("#subscription_link").click(function(){
$.get('/user/subscription/toggle/id/<?php echo $this->object->id; ?>/object/Movie', function(data) {
$('#subscription_link').html(data);
});
return true;
});
});
<?php $this->headScript()->captureEnd(); ?>