Reputation: 2206
Basically, I have a model that I display to standard checkboxlist that have a value.
I got this from my model:
echo $model->bundle_numbers;
Array
(
[0] => 1
[1] => 2
[2] => 3
)
So, in controller:
if ($model->load($request->post()) && $model->save()) {
return [
'forceReload' => '#crud-datatable-pjax',
'title' => "Create new OutgoingPipe",
'content' => '<span class="text-success">Create Outgoing Pipe success</span>',
'footer' => Html::button('Close', ['class' => 'btn btn-default pull-left', 'data-dismiss' => "modal"]) .
Html::a('Create More', ['create'], ['class' => 'btn btn-primary', 'role' => 'modal-remote'])
];
}
Now I want to change the array into string format. So, use beforeSave:
public function beforeSave($insert){
$this->bundle_numbers = implode(",", $this->bundle_numbers);
return parent::beforeSave($insert); // TODO: Change the autogenerated stub
}
In rules, based Gii generator model, I remove string rules:
[['bundle_numbers'], 'string', //deleted
But still not success to insert the data. No errors displayed.
I can see all errors:
$model->save(false);
$model->getErrors();
Now, I can see, I have a lot of errors in another rule.
Upvotes: 0
Views: 1229
Reputation: 133360
Try if you have some error in load or validate
if ($model->load($request->post()) {
if ($model->save()){
return [
'forceReload' => '#crud-datatable-pjax',
'title' => "Create new OutgoingPipe",
'content' => '<span class="text-success">Create Outgoing Pipe success</span>',
'footer' => Html::button('Close', ['class' => 'btn btn-default pull-left', 'data-dismiss' => "modal"]) .
Html::a('Create More', ['create'], ['class' => 'btn btn-primary', 'role' => 'modal-remote'])
];
} else {
var_dump('save fail');
var_dump( $model->errors);
}
Upvotes: 1
Reputation: 210
do like this
<?php
if ($model->load($request->post()) {
$model->bundle_numbers = implode(",", $model->bundle_numbers);
$model->save();
return //wherever you want return
}
Upvotes: 0
Reputation: 27503
public function beforeSave($insert){
if (parent::beforeSave($insert)) {
$this->bundle_numbers = implode(",", $this->bundle_numbers);
return $this->bundle_numbers;
} else {
return false;
}
}
try this
Upvotes: 2