我有一个表格,可以上传他/她自己的CV文件(docx / pdf)。我有一个下拉菜单“员工姓名”,其中只显示列表中的登录用户名。但现在我想要在输入字段中显示登录用户名。我可以这样做。任何人都可以给我代码示例。因为我编码很差。 这是我的代码:
if($UserType == "employee")
{
$criteria=new CDbCriteria();
$criteria->condition = "status= 'active' and id = $ID";
echo $form->dropDownListGroup(
$model,
'user_id',
array(
'wrapperHtmlOptions' => array(
'class' => 'col-sm-5',
),
'widgetOptions' => array(
'data' => CHtml::listData(User::model()->findAll($criteria), 'id', 'user_id'),
'htmlOptions' => array('prompt'=>'Select'),
)
)
);
}
答案 0 :(得分:0)
这就是我的方式:
首先,在/ protected / components中,我设置了一个会话变量来存储登录的用户名:
public function authenticate()
{
$user = Users::model()->find('user = ? ', array($this->username)); //user entered when trying to log in
...
}
如果验证正确:
public function authenticate()
{
...
$session = new CHttpSession;
$session->open(); //session_start
$session['user'] = $user; //$user is the logged-in username
...
}
在控制器操作中创建:
public function actionCreate(){
$session = new CHttpSession;
$session->open();
$user = $session['user'];
...
$this->render('create',array(
'user'=>$user,
'model'=>$model,
...
));
}
在视图中(例如在/ _form中):
...
$model->user = $user;
$form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'id'=>'user-form',
'enableAjaxValidation'=>false,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
));
...
echo $form->dropDownList($model,'user',...); //Here, the attribute 'user' of the model $model will have the logged-in user-name
...
假设您有一个名为' user'在你的模型中。如果没有,那么,在/ model中,创建一个辅助属性' user'为了在/ _form中使用此属性:
class YourModel extends CActiveRecord
{
public $user; //$variable used to set the logged-in username
...
}