2013-07-03 2 views
0

Всякий раз, когда страница загружается или перезагружается с помощью перенаправления/рендеринга/обновления, она автоматически передает последнюю информацию, которая была отправлена ​​в базу данных постоянно. Я попытался добавить ограничения к методу добавления, но, похоже, он хранит информацию из предыдущего представления, что позволяет ему передать isset $ _POST.My Activeform триггеры, когда страница загружена или перезагружена

вид, который содержит действие.

<div class="form offset2"> 
<?php $form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
    'id'=>'userTeam-form', 
    'enableAjaxValidation'=>false, 
    // Check thta the action method below is correct 
    'action'=> array('/User/AddTeamMessage', 'id' => $model->id), 
)); ?> 

<!-- 
    Would allow user to access specific team messages and control how much gets display. 
    still under construction. 
--> 
    <div class="row"> 
     <?php 
      echo CHtml::dropDownList("teamId", 'id', Chtml::listData($model->memberOfTeams, 'id', 'teamName'),array(
       'empty'=>'Select Team', 
       'ajax'=>array(
        'type'=>'POST', // request type 
        'url'=>CController::createUrl('DisplayMessage'), 
        'update'=>'#teamMessages', // selector to update 
        'data'=>array('teamId'=>'js:this.value'), 
        ) 
       ) 
      ); 
      echo CHtml::dropDownList("teamMessages", '', array(), array('prompt'=>'Select Messages')); 
     ?> 
    </div> 

<!-- 
    Only works for coaches 
    Allows coaches to submit team messages. 
--> 
<?php if ($model->isCoach()) { ?> 
    <!-- Text area for the coach to enter messages in --> 
    <textarea name="addTeamMessage" class="span5" rows="5" style="resize: none;"></textarea> 
    <!-- submit button --> 
    <?php echo CHtml::submitButton('Submit Message', array(
     'class' => 'btn btn-primary', 
     'name' => 'submitTeamMessage' 
    )); ?> 
<?php } ?> 
<!-- end the widget. everything will be send to UserController/AddTeamMessages --> 
<?php $this->endWidget(); ?> 

контроллер, когда ActiveForm является surppose быть триггером.

/* add a team message submitted by the coach of the team */ 
public function actionAddTeamMessage($id) 
{ 
    /* check if team and message aren't null */ 
    if(isset($_POST['submitTeamMessage'])) 
    { 
     if(isset($_POST['teamId']['addTeamMessage'])) 
     { 
      try 
      { 
       /* creates a new message */ 
       $teamModel = new TeamMessage; 
       $teamModel->teamId = $_POST['teamId']; 
       $teamModel->content = $_POST['addTeamMessage']; 
       $teamModel->sendTime = new CDbExpression('NOW()'); 
       $teamModel->save(); 
      } 
      catch(Exception $e) 
      { 
       echo "Unable to save."; 
      } 
     } 
    } 
    /* render the profile page for the current user */  
    $user=User::model()->findByPk($id); 
    $this->render('profile', array(
     'model' => $user)); 
} 

ответ

1

Это также отправка данных, когда вы переходите на страницу при входе в систему в качестве тренера?

если нет: проблема может быть кнопкой отправки, так как активная форма не может быть отправлена. поместите его за пределы инструкции isCoach if.

<?php if ($model->isCoach()) { ?> 
<!-- Text area for the coach to enter messages in --> 
<textarea name="addTeamMessage" class="span5" rows="5" style="resize: none;"></textarea> 
<?php } ?> 
<!-- submit button --> 
<?php echo CHtml::submitButton('Submit Message', array(
    'class' => 'btn btn-primary', 
    'name' => 'submitTeamMessage' 
)); ?> 
+0

Это происходит только в том случае, если я вхожу в качестве тренера, если он не работает отлично, потому что только тренер может получить доступ к действию контроллера для добавления информации в базу данных. – user2205196

+0

Кто-нибудь понимает, почему он продолжает запускать мой AddTeamMessage, когда я обновляю страницу? – user2205196

Смежные вопросы