我正在学习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 以回显它{{ 1}}。但它仅仅是as 1 and not 0
。那么我怎样才能实现这个任务,如果一个动作修改一个变量,那么我可以在第二个动作中获得修改后的值
答案 0 :(得分:1)
在控制器功能的一侧,你必须使用计数变量
$这 - >计数
所以,完整的代码将是:
类MyappController扩展Controller {
public $ count = 0;
公共职能actionInitialCount()
{
$这 - >重定向( 'secondCount');
}
公共职能actionSecondCount()
{
echo $ this-> count;
}
}
答案 1 :(得分:1)
认为我有一个班级
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
}
答案 2 :(得分:1)
现在我举了不同的例子。
这是一个简单的PHP程序示例。
class MyappController {
public $count = 0;
function InitialCount() {
$this->count = 1;
}
function SecondCount() {
print $this->count;
}
}
$ob = new MyappController();
$ob->InitialCount();
$ob->SecondCount();
同样的节目,但在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 ;
}
}
我们可以通过在课堂外访问来改变价值。
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 Sessions,然后您就可以完成您的要求。 在我的Yii示例中,如果将其重定向到视图,那么它将生成错误,因为我已经创建了构造函数。
希望它能帮助您理解。
感谢。
答案 3 :(得分:1)
你能不能只使用Yii :: app() - > session ['count']计算一个会话?现在发生的是当你调用actionInitialCount并再次调用actionSecondCount时正在加载类,所以$ count将被设置回0。
答案 4 :(得分:1)
我认为,您正在考虑应用程序的两个生命周期之间的共同变量。这只能用于$ _SESSION或其他持久变量。我希望,你理解这一点。