2013-07-03 3 views
0

리디렉션/렌더링/새로 고침을 통해 페이지를로드하거나 다시로드 할 때마다 데이터베이스에 마지막으로 제출 된 정보가 자동 제출됩니다. add 메서드에 제한을 추가하려고 시도했지만 이전 제출의 정보를 보유하고있는 것으로 보이므로 isset $ _POST를 전달할 수 있습니다.페이지가로드되거나 다시로드 될 때 My Activeform이 발생합니다.

actionform이 포함 된보기입니다.

<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