大家好,我用yii 2开发的软件有问题。我有一个模型叫Anagrafica,并与它的主键id。与此模型一切工作。我也有一个模型叫AnagraficaOpzioniCarriera扩展第一个。
我有一个视图anagrafica/索引,显示了一个Kartik网格与注册的人的数据,你可以在anagrafica中找到.管理员用户可以通过单击属性“cognome”渲染到anagrafica/update更新Anagrafica模型的数据.
这是调用控制器Anagrafica Controller以到达anagrafica/update的命令'cognome'=>Grid::Labels('cognome',['anagrafica/update'],\app\helpers\Permits::allow('anagrafica','update'),'id','btn','info','10%'),
这是Anagrafica控制器
public function actionUpdate($id,$error=0,$message='')
{
$id = (int)$id;
$model = Anagrafica::findOne(['id' => $id]);
$model->scenario = 'update';
if ($model->load(Yii::$app->request->post())) {
if($model->validate()){
}
if($model->save(false)){
return $this->redirect(['anagrafica/update','id'=>$model->id]);
}
}
}
return $this->render('update', ['model' => $model, 'extended'=>true]);
}
我删除了一些代码来简化它,但这是核心。
一次视图anagrafica/update是在这个页面中,我有一个ActiveForm修改模型的数据,我有一个渲染到一个网格,显示包含在AnagraficaOpzioniCarriera关于$模型,我正在更新的属性.<?= $this->render('_opzioni_carriera',['parent'=>$model]); ?>
Anagrafica/_opzioni_carriera视图包含显示模型AnagraficaOpzioniCarriera中列的Kartik格网
<?php
use kartik\grid\GridView;
use kartik\select2\Select2;
use kartik\widgets\ActiveForm;
use kartik\editable\Editable;
use kartik\widgets\SwitchInput;
use yii\helpers\ArrayHelper;
use app\helpers\Autoconfigurazione;
use app\models\AnagraficaOpzioniCarriera;
use app\helpers\Grid;
use yii\helpers\Html;
use app\helpers\UserInfo;
/* @var $this yii\web\View */
/* @var $model app\models\AnagraficaOpzioniCarriera*/
$model = new AnagraficaOpzioniCarriera(['scenario'=>'search']);
?>
<div class="">
<?php
echo GridView::widget([
'options'=>[
'id'=>'opzioni_carriera',
],
'dataProvider'=> $model->search($parent->id,Yii::$app->request->queryParams),
'showPageSummary'=>false,
'headerRowOptions'=>['class'=>'kartik-sheet-style'],
'pjax'=>true, // pjax is set to always true for this demo
'pjaxSettings'=>[
'neverTimeout'=>true,
],
'toolbar'=> [
[
'content'=>''
],
],
'panel'=>[
'heading'=>false,
'footer'=>false,
'after'=>false,
],
'columns' => Grid::gridColumns([
'model'=>$model,
'checkbox'=>false,
'remove'=>Grid::gridRemove($model),
'extraOptions' =>[
'cashback' =>Grid::YNColumn('cashback',['anagrafica-opzioni-carriera/update', 'id' => $parent->id],'left',true,'5%'),
'compensa'=>Grid::YNColumn('compensa',['anagrafica-opzioni-carriera/update', 'id' => $parent->id],'left',true,'5%'),
'associazione'=>Grid::YNColumn('associazione',['anagrafica-opzioni-carriera/update', 'id' => $parent->id],'left',true,'5%'),
'formazione'=>Grid::YNColumn('formazione',['anagrafica-opzioni-carriera/update', 'id' => $parent->id],'left',true,'5%'),
],
]);
?>
</div>
cashback,compensa etc..是模型AnagraficaOpzioniCarriera中的属性。在这里,当我试图更新这些属性时,一切看起来都很好,函数model-〉validate()和model-〉load返回真值,但在过程结束时不起作用。老实说,我不知道我必须从控制器的函数返回什么。
public function actionUpdate($id)
{
$model = AnagraficaOpzioniCarriera::findOne(['id_anagrafica' => $id]);
if (!$model) {
// Se l'anagrafica opzioni carriera non esiste, genera un'eccezione 404
throw new \yii\web\NotFoundHttpException(Yii::t('app', 'The requested page does not exist.'));
}
$model->scenario = 'update';
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
if(Yii::$app->request->post('cashback') != null) $model->cashback = Yii::$app->request->post('cashback');
if(Yii::$app->request->post('compensa') != null) $model->cashback = Yii::$app->request->post('compensa');
if(Yii::$app->request->post('associazione') != null) $model->cashback = Yii::$app->request->post('associazione');
if(Yii::$app->request->post('formazione') != null) $model->cashback = Yii::$app->request->post('formazione');
if ($model->save()) {
return Json::encode(["success" => true, 'message' => 'Dati aggiornati']);
}
}
// Mostra il form di modifica
return $this->render('_opzioni_carriera', [
'parent' => $model,
]);
}
有人能帮我吗?我希望我能很好的解释我的问题,但我知道我的英语不是最好的。无论如何,提前感谢所有想帮助我的人,如果你需要其他什么,你可以很容易地问。
我尝试了所有的一切,也记录器,但没有工作
就像有人建议的,这些是模型AnagraficaOpzioni的规则,但是就像我之前说的,model-〉validate()是有效的,因此我认为问题并不在于此
public function rules()
{
return [
[['id_anagrafica'], 'required'],
[['id_anagrafica'], 'integer'],
[['cashback', 'compensa', 'associazione', 'formazione'], 'required', 'on'=>['update']],
[['cashback', 'compensa', 'associazione', 'formazione'], 'integer'],
[['id_anagrafica', 'cashback', 'compensa', 'associazione', 'formazione',], 'safe', 'on'=>['search']],
];
}
1条答案
按热度按时间xzlaal3s1#
根据你的代码,看起来你是加载所有的数据在一个属性。即**$模型-〉现金回馈**;
你能试试