从函数中获取值后放入数组/会话


Put in an array/session after getting value from a function

你好,我有一个过程,用户单击一个添加按钮,然后它将信息保存到数据库中,然后通过另一个函数获取它。但我想做的是跳过数据库保存然后只是把它放在一个数组或会话(无论什么是可能的),然后使用它放在一个视图。这可能吗?

下面是我当前的代码:

在视图中添加按钮:

    <p>
     <?= Html::a('<b>ADD</b>',
     ['site/addsubject', 'TrNo' => $subjects['TrNo'], 'clientid' => $_user],
     ['class' => 'btn-info btn-transparent btn-large', 'data-method' => 'post']) ?>
   </p>

然后控制器中的函数:

 public function actionAddsubject($TrNo, $clientid){
      //echo $subjectid;
      //echo "Hello";
      $model = new ActiveSubject();
      //$var =  $model->AddSubject($subjectid);
      $model->AddSubject($TrNo, $clientid);
       $this->redirect(array('site/main'));
     // echo $var->subjectname;
     //echo $var['subjectname'];
    }

进行保存的模型

public static function AddSubject($TrNo, $clientid){
  $subject = ActiveCurriculum::find()
                                ->select('scstock.*')
                                ->joinWith('schead')
                                ->where(['schead.TrNo' => $TrNo])
                                ->one();
    $activesubject = new ActiveSubject();
    $activesubject->clientid = $clientid;
    $activesubject->TrNo = $subject->TrNo;
    $activesubject->subjectcode = $subject->subjectcode;
    $activesubject->schedday = $subject->schedday;
    $activesubject->schedtime = $subject->schedtime;
    //remember to use schead if the value is joined from another table.
    $activesubject->section = $subject->schead->section;
    $activesubject->roomcode = $subject->roomcode;
    $activesubject->units = $subject->units;
    $activesubject->save();
//reduces the slot of ccsubject by 1
     $subject->slots = $subject->slots - 1;
     //never forget the saving part
     $subject->save();
        return true;
}

是否可以将其存储在数组或会话中,并使其在视图中可访问?我想把它放到变量中,但如何处理添加按钮呢?

对于在用户会话中临时存储数据,您可以这样做

$session = Yii::$app->session;
//check if session is active
if ($session->isActive)
{
     $session->set('subject', 'Maths');       
}

要检索存储在会话中的数据,您可以执行如下操作

 $session = Yii::$app->session;
 if ($session->isActive)
 {
     $subject = $session->get('subject');    
 }

使用此链接了解有关yii2

中的会话处理的更多信息http://www.bsourcecode.com/yiiframework2/session-handling-in-yii-framework-2-0/

但是,如果您的目的只是临时存储数据,以便在下一个操作或视图中可用,则可以像

这样做
public function  actionAddsubject($TrNo, $clientid)
{
   //just showing an example of a variable that holds some data
   $subject = "Maths";
   //redirect to action site/main and make the $subject data available there
   return $this->redirect(['site/main', 'subject' => $subject ]);

}

请注意,上面的代码将重定向到data $subject可用的action site/main。要访问site/main中的data $subject,您可以这样做

public function actionMain($subject)
{
    //now you can do whatever with $subject
}