Buenas tardes, estoy trabajando con cruge y cuando deseo editar un usuario y me tira el siguiente error:
Method CJavaScriptExpression::__toString() must return a string value
[size="6"][b][u]y el codigo del controlers es el sgte:
[/u][/b][/size]
public function actionUserManagementUpdate($id)
{
$this->_editUserProfile(Yii::app()->user->um->loadUserById($id), true);
}
public function _editUserProfile(ICrugeStoredUser $model, $boolIsUserManagement)
{
// carga los campos definidos por el administrador
// trayendo consigo el atributo "value" accesible mediante $xx->fieldvalue
Yii::app()->user->um->loadUserFields($model);
$this->performAjaxValidation('crugestoreduser-form', $model);
if (isset($_POST[CrugeUtil::config()->postNameMappings['CrugeStoredUser']])) {
$model->attributes = $_POST[CrugeUtil::config()->postNameMappings['CrugeStoredUser']];
if ($model->validate()) {
// el modelo ICrugeStoredUser ha validado bien, incluso cada uno de sus campos extra
/*
si se ha especificado algun valor en $model->newPassword se asume
que se quiere cambiar la clave:
*/
$newPwd = trim($model->newPassword);
Yii::log("deteccion de nueva clave: newPassword: [" . $newPwd . "]", "info");
if ($newPwd != '') {
Yii::log("\n\n***NUEVA CLAVE***\n\n", "info");
Yii::app()->user->um->changePassword($model, $newPwd);
Yii::app()->crugemailer->sendPasswordTo($model, $newPwd);
}
if (Yii::app()->user->um->save($model, 'update')) {
if ($boolIsUserManagement == true) {
$this->redirect(array('usermanagementadmin'));
} else {
$this->redirect(array('usersaved', 'layout' => $this->layout));
}
}
}
}
$this->render(
"usermanagementupdate",
array(
'model' => $model
,
'boolIsUserManagement' => $boolIsUserManagement
)
);
}
[size="6"]y el de la vista:[/size]
<h1><?php echo ucwords(CrugeTranslator::t(‘admin’, ‘Manage Users’));?></h1>
<?php
/*
para darle los atributos al CGridView de forma de ser consistente con el sistema Cruge
es mejor preguntarle al Factory por los atributos disponibles, esto es porque si se decide
cambiar la clase de CrugeStoredUser por otra entonces asi no haya dependenci directa a los
campos.
*/
$cols = array();
// presenta los campos de ICrugeStoredUser
foreach(Yii::app()->user->um->getSortFieldNamesForICrugeStoredUser() as $key=>$fieldName){
$value=null; // default
$filter=null; // default, textbox
$type='text';
if($fieldName == 'state'){
$value = '$data->getStateName()';
$filter = Yii::app()->user->um->getUserStateOptions();
}
if($fieldName == 'logondate'){
$type='datetime';
}
$cols[] = array('name'=>$fieldName,'value'=>$value,'filter'=>$filter,'type'=>$type);
}
$cols[] = array(
'class'=>'CButtonColumn',
'template' => '{update} {eliminar}',
'deleteConfirmation'=>CrugeTranslator::t('admin', 'Are you sure you want to delete this user'),
'buttons' => array(
'update'=>array(
'label'=>CrugeTranslator::t('admin', 'Update User'),
'url'=>'array("usermanagementupdate","id"=>$data->getPrimaryKey())'
),
'eliminar'=>array(
'label'=>CrugeTranslator::t('admin', 'Delete User'),
'imageUrl'=>Yii::app()->user->ui->getResource("delete.png"),
'url'=>'array("usermanagementdelete","id"=>$data->getPrimaryKey())'
),
),
);
$this->widget(Yii::app()->user->ui->CGridViewClass,
array(
'dataProvider'=>$dataProvider,
'columns'=>$cols,
'filter'=>$model,
));
?>