2015-09-04 3 views
0

Как я могу поместить кнопку удаления ajax для удаления комментария опубликованным пользователем?
_formAjax delete for yii

echo '<div><h3><b><u>Comments</u></b></h3></div>'; 

$commentList = Comments::model()->findAllByAttributes(array('offereventid'=>$id)); 
    foreach($commentList as $Listdata2) 
    { 
     $usercomment = $Listdata2['comment']; 
     $usercommentid = $Listdata2['id'];   
     $usercomtname = $Listdata2['name'];   
     $usercommentmail = $Listdata2['email'];  
     echo '<div><span class="name1">'.$usercomtname.':</span> '.'<span class ="email1">'.'['.$usercommentmail.']'.'</span>'.'</div>';    
     echo '<div class = "cmnts" >'.'"'.$usercomment.'"'.'['.$usercommentid.']'.'</div>'; 
     // echo CHtml::ajaxSubmitButton('Delete ', array('delete', 'id'=>$usercommentid)); 

     echo '<hr>';  
    } 

пожалуйста, помогите мне с этим. Я пробовал много методов, но когда я пытался, любой пользователь может удалить комментарий любого пользователя.

+0

Вы не должны писать типовые запросы на ваш взгляд. – Criesto

+0

Как я могу достичь функции удаления ??? –

+0

Как я понимаю, вы хотите показать ajaxSubmitButton только в комментариях, которые были созданы от текущего пользователя, и дать возможность удалить текущего пользователя. Это правильно? –

ответ

1

Я получил решение проблемы

echo CHtml::ajaxButton(
    'Delete', 
    CHtml::normalizeUrl(array(
     'Comments/del/id/' . $usercommentid, 
     'render' => true 
    )), 
    array(
     'dataType' => 'json', 
     'type' => 'post', 
     'success' => 'function(data) { 
      $("#name_"+data).hide(); 
     }', 

    ), 
    array('id' => $usercommentid, 'class' => 'btn btn-success') 
); 
2

Текущий пользователь предоставлен Yii :: app() -> user-> id.

Самый простой подход - совместить идентификатор logged0in с идентификатором пользователя комментария. Однако из вашего кода я вижу, что вы храните электронную почту, а не идентификатор.

Вы должны поэтому либо

  • а) создавать и хранить идентификатор пользователя в таблице комментариев
  • б) Изменение UserIdentity, чтобы добавить адреса электронной почты пользователя

Я предлагаю (а) как наименее болезненный вариант для вас.

if (Yii::app()->user->id == $Listdata2['user_id']) { 
    echo CHtml::ajaxSubmitButton('Delete ', array('delete', 'id' => $idComment)); 
} 

Вы должны затем создать действие контроллера (я оставил из очевидных проверки ошибок)

function actionDelete($id = null) { 

    // Load the comment object 
    $commentModel = Comment::model()->findByPK($id);eck if the user has 
    // TODO: Do error check here 

    // Check if the user has access to do this. 
    if (Yii::app()->user->id !== $commentModel->user_id) { 
     // TODO: Nice error here. 
     echo "This is not your comment. You cannot delete it"; 
    } else { 
     $commentModel->delete(); 
     // TODO: Error checks here 
    } 
}