Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 访问Yii2中的模型变量(用户输入)_Php_Yii2 - Fatal编程技术网

Php 访问Yii2中的模型变量(用户输入)

Php 访问Yii2中的模型变量(用户输入),php,yii2,Php,Yii2,在common\model\LoginForm.php中,我用以下语句声明了一个变量: public $nhs 在规则中,我已将其声明为布尔值&required。这将在登录时的frontend\views\site\login.php中以单选按钮的形式呈现给用户,该单选按钮为true或false 我需要访问用户登录后在流程中的其他位置,特别是在以下位置,由用户设置的该变量的值: 前端\views\layouts\main.php 以控制呈现给用户的选项。我对Yii2比较陌生,正在努力寻找解决方

在common\model\LoginForm.php中,我用以下语句声明了一个变量:

public $nhs
在规则中,我已将其声明为布尔值&required。这将在登录时的frontend\views\site\login.php中以单选按钮的形式呈现给用户,该单选按钮为true或false

我需要访问用户登录后在流程中的其他位置,特别是在以下位置,由用户设置的该变量的值:

前端\views\layouts\main.php

以控制呈现给用户的选项。我对Yii2比较陌生,正在努力寻找解决方案。

如果您在模型中声明变量,但它不是数据库中的字段,则该变量只是临时变量,并且只会持续到post操作完成并保存数据。移动到另一个动作并重新加载模型后,该值即消失

因此,如果您希望这些信息在所有应用程序中持续存在,您有两个选择:

删除公共变量,将该变量设置为数据库中的字段,并在用户登录后将其存储。 将其作为$\u会话['nhs']=//post变量存储在用户会话中 如果您选择第一个选项,并将其存储在登录的用户模型上,您可以在应用程序的任何位置访问该变量,当然,如果用户已连接:

echo Yii::$app->user->identity->nhs;
如果你选择第二个选项,你会:

echo $_SESSION['nhs'];

变量$nhs不是数据库中的一个字段,因为它可以在用户每次登录时更改,因此尝试使用您的建议re$\U会话。因此,在Login.php表单中,我使用以下代码:and。然后我使用$_SESSION['nhs']=$model->nhs;但是,我无法在应用程序的其他地方访问“nhs”的值。我是否误解了你的建议?请在问题中添加你的评论作为编辑,这样任何人都可以在不搜索页面的情况下看到它comments@AlanYoung您需要每次启动会话以使用会话\ u start访问变量。因此,您的第一个do会话将启动,然后您将nhs保存到会话中。之后,如果要再次访问会话,则必须再次打开会话启动的会话。请注意,会话关闭时,该会话变量也将丢失。