2013-08-08 2 views
0

저는 Yii 프레임 워크가 처음입니다. Ajax 제출 버튼을 작성하는 데 도움이되는 훌륭한 예제 또는 Javascript 경험이 있는지 궁금합니다. 이 제출 버튼의 모든 목적은 현재 페이지를 좋아하고/필요에 데이터를 보내는 것입니다. 버튼의 레이블은 데이터베이스의 정보에 따라 변경되어야합니다 (버튼 레이블 -> 즐겨 찾기 또는 즐겨 찾기가 아닌 것).Yii 프레임 워크에서 Ajax 버튼을 작성하는 방법은 무엇입니까?

여기 내 기본 버튼의 현재 기능입니다. 다음 단계를 수행하고 아약스 사용을 시작하고 싶습니다. 누군가 초보자를 가르치는 데 관심이 있다면. 나는 도전 할 것입니다.

<div> 
    <?php echo CHtml::button('Favorite', array('submit'=>array('user/favoritePage', 'playerId'=>$player->id, 'pageId'=>$page->id, 'bool'=>'FALSE'))); ?> 
</div> 

답변

1
$toggle = $model->is_favourite? "false": "true"; 

$actionUrl = Yii::app()->createUrl('user/favoritePage', array(
    'playerId'=>$player->id, 'pageId'=>$page->id 
)); 


//render input type=submit with id=favourite-button 
echo CHtml::ajaxSubmitButton(
    ($model->is_favourite? 'Favourite' : 'Un-Favourite'), //label button 
    $actionUrl, 
    array(
     'data' => 'js:{bool: $("#favourite-button").attr("toggle")}', //get current status of button (favourite or not) as param to post 
     'success'=>'js:function(data){ 
//ajax success, update label and status of button for next time 
     data = $.parseJSON(data); 
     $("#favourite-button").val(data["label"]); 
     $("#favourite-button").attr("toggle", data["toggle"]); 
     }' 

    ), 
    array(
     'id'  => 'favourite-button', // set id for button 
     'toggle' => $toggle // set attribute to hold favourite status, or you can set it on hidden field instead and then update the selector on ajax success 
    ) 
); 

public function actionfavoritePage(){ 
if(Yii::app()->request->isAjaxRequest(){ // this check is not necessary if you write this function just for ajax call only 

$playerId- = $_GET['playerId']; // get query string 
$pageId- = $_GET['pageId']; // get query string 
$bool = $_POST['bool']; // get status true OR false 

//do your stuff to save status here 
... 


//then return result as json 
echo json_encode(array('label' => '[your new button label]', 'toggle'=>$bool?'false':'true')); 

exit(); 
}) 


} 
관련 문제