Может кто-нибудь сказать, почему мой $model->load(Yii::$app->request->post()
возвращает логическое значение (false)?Я пытаюсь использовать var_dump $model->load(Yii::$app->request->post()
, и в нем определенно есть мое входное значение (не ноль).
Вот мой код.Я работаю над редактируемым полем ввода на основе Vitalet's x-editable
.В этом поле будет изменено значение столбца tema
базы данных (атрибут модели tema
).Я пытаюсь print_r($model->getErrors())
в выражении 'else' и получаю
Array
(
)
public function actionFetch(){
//There's only a single row in the table.
$model= Home::find()->one();
if (Yii::$app->request->isAjax) {
// use Yii's response format to encode output as JSON
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
// save posted model attributes
if ($model->load(Yii::$app->request->post()) && $model->save()) {
//extract the class name
$modelClassName = \yii\helpers\StringHelper::basename(get_class($model));
//grab the post parameters array (as attribute=>value)
$params = Yii::$app->request->post($modelClassName);
//pull the first value from the array (there should only be one)
$value = reset($params);
// return JSON encoded output in the below format
return ['output'=>$value, 'message'=>'success'];
} else {
// else if nothing to do always return an empty JSON encoded output
// alternatively you can return a validation error
return ['output'=>'', 'message'=>'fail'];
}
};
}
Вид:
<a href="#" id="tema" name="tema" data-type="text" data-pk=<?=$model->id?> data-url=<?=Url::to(['home/fetch']);?> data-title="Enter username"><?=$model->tema?></a>
Правило моей модели:
public function rules()
{
return [
[[ 'id','isiTema', 'image', 'midLeft_title', 'midLeft_content', 'midCenter_title', 'midCenter_content', 'midRight_title', 'midRight_content', 'footerLeft', 'footerRight', 'created_at', 'updated_at'], 'required'],
[['midLeft_content', 'midCenter_content', 'midRight_content', 'footerLeft', 'footerRight'], 'string'],
[['id'],'integer'],
[['created_at', 'updated_at'], 'safe'],
[['tema', 'isiTema', 'image', 'midLeft_title', 'midCenter_title', 'midRight_title'], 'string', 'max' => 255],
];
}
Это мой var_dump(Yii::$app->request->post())
содержит:
array(3) {
["name"]=>
string(4) "tema"
["value"]=>
string(5) "aaabb"
["pk"]=>
string(1) "1"
}
Я пробую это в моем контроллере, но результат все тот же (в основном я думаю, что мне не нужно, поскольку он содержит только одну строку втаблица):
...
$pk = $_POST['pk'];
$model=Home::find()->where(['id'=>$pk])->one();
...
...