我正在学习Yii,我想问一个基本问题。我有一个控制器,控制器中有两个动作,如下
class MyappController extends Controller
{
public $count=0;
public function actionInitialCount()
{
$this->count=1;
$this->redirect('secondCount');
}
public function actionSecondCount()
{
echo $this->count;
}
}
现在我想要的是,当InitialCount操作将$count变量修改为1时。secondCount以回显它CCD_ 1。但它只将其作为0
。那么,我如何实现这一任务呢?如果一个操作修改了一个变量,那么我就可以在第二个操作中获得修改后的值
我认为,您正在考虑应用程序的两个生命周期之间的共同变量。这只有在使用$_SESSION或其他持久变量时才可能实现。我希望你能理解这一点。
在控制器功能方面,您必须使用计数变量作为
$this->计数
因此,完整的代码将是:
类MyappController扩展控制器{
public$count=0;
公共函数actionInitialCount()
{
$this->重定向('secondCount');
}
公共函数actionSecondCount()
{
echo$this->计数
}
}
认为我有一个类
class AController extends MyController{
//can be accessed here(even in the view) using $this->publicvariable
}
我说这是组件
class MyController extends CController{
//My public variable is declared here
}
现在我举不同的例子。
示例1
这是一个简单的PHP程序示例。
class MyappController {
public $count = 0;
function InitialCount() {
$this->count = 1;
}
function SecondCount() {
print $this->count;
}
}
$ob = new MyappController();
$ob->InitialCount();
$ob->SecondCount();
示例2
以上是相同的程序,但在Yii。
class MyappController extends Controller
{
public $count=0;
function __construct() {
$this->count = 7 + 8 ;
}
public function actionIndex()
{
echo $this->count ;
}
public function actionInitialCount()
{
echo $this->count=1;
}
public function actionSecondCount()
{
echo $this->count ;
}
}
示例3
我们可以通过在类外访问它来更改值。
class MyTest
{
protected $a;
public function __construct($a)
{
$this->a = $a;
}
public function head()
{
echo $this->a;
}
public function footer()
{
echo $this->a;
}
}
$a = 7;
$obj = new MyTest($a);
echo $obj->head();
实际上,当您修改变量值时,您需要声明它,正如我在第一个示例中所声明的那样,然后您可以获得更改后的值。其次,就像在电子商务应用程序中一样,当我们购买不同的商品时,它会显示每个商品的修改值,因此可以通过在服务器上存储信息的会话变量访问它。如果你需要在Yii中修改后的值并将其显示在视图上,这样你就可以阅读Yii会话,然后你就可以满足你的要求。在我的Yii示例中,如果您将其重定向到视图,那么它将生成错误,因为我创建了Constructor。
希望它能帮助你理解。
谢谢。
你能不能不使用Yii::app()->session['count']来计算一个会话?现在发生的情况是,当您调用actionInitialCount并再次调用actionSecondCount时,类正在被加载,因此$count将被设置回0。