Php 访问Yii2中的模型变量(用户输入)
在common\model\LoginForm.php中,我用以下语句声明了一个变量: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比较陌生,正在努力寻找解决方
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保存到会话中。之后,如果要再次访问会话,则必须再次打开会话启动的会话。请注意,会话关闭时,该会话变量也将丢失。