亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁(yè) php框架 YII yii中為模型的attributes賦值失敗

yii中為模型的attributes賦值失敗

Feb 20, 2020 am 11:01 AM
attributes yii

yii中為模型的attributes賦值失敗

問(wèn)題:

Yii框架中不能直接給模型的attributes賦值。

首先看一下源碼:

$menuId = isset($_GET['mId']) ? $_GET['mId'] : 0;
if ($menuId) {
    $menu = MenuTree::model()->findByPk($menuId);
    if(isset($_POST['MenuTree'])){
        var_dump($menu->attributes); //在這里跟蹤輸出的數(shù)據(jù)正常,跟表單中填寫的一致
        $menu->attributes = $_POST['MenuTree']; //對(duì)attributes進(jìn)行賦值
        var_dump($menu->attributes); //輸出$menu模型中的attributes,不正常,結(jié)果并不是POST接收到的值,而是數(shù)據(jù)庫(kù)原有的值
        if($menu->save()){
            Yii::app()->user->setFlash('success',"恭喜您,修改成功,請(qǐng)繼續(xù)!");
            $this->redirect(Yii::app()->createUrl('menu/contentEdit',array('mId'=>$menuId)));
        }else{
            throw new CException("修改失敗!");
        }
    }
    $this->render("contentEdit", array('menu' => $menu));
} else {
    throw new CHttpException('404');
}

(相關(guān)文章教程推薦:yii框架

這是一個(gè)頁(yè)面的action代碼,看代碼中的注釋可以看到出現(xiàn)的錯(cuò)誤,不接受POST的賦值,試過(guò)使用setAttributes函數(shù)也一樣不接受,輸出的還是原數(shù)據(jù)庫(kù)的值,但是用updateByPk操作就可以,跟蹤了一下setAttributes函數(shù),發(fā)現(xiàn)函數(shù)定義如下:

 
public function setAttributes($values,$safeOnly=true)
{
    if(!is_array($values))
        return;
    $attributes=array_flip($safeOnly ? $this->getSafeAttributeNames() : $this->attributeNames());
    foreach($values as $name=>$value)
    {
        if(isset($attributes[$name]))
            $this->$name=$value;
        else if($safeOnly)
            $this->onUnsafeAttribute($name,$value);
    }
}

分析setAttributes函數(shù)代碼可以看到,在對(duì)attributes賦值時(shí)進(jìn)行安全檢查,所以想到原因可能出現(xiàn)模型的rules沒(méi)有對(duì)那幾個(gè)表單中修改的字段設(shè)置為安全,找到原因,解決方案就出來(lái)了,在model的rules中,把想要修改的字段的屬性設(shè)置為安全即可。

public function rules()
{
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        // more code...
        array('field1 , field2 ,field3', 'safe'), //Modify the fields in here
        // more code...
    );
}

更多編程相關(guān)內(nèi)容,請(qǐng)關(guān)注php中文網(wǎng)編程入門欄目!

以上是yii中為模型的attributes賦值失敗的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
Yii2 vs Phalcon:哪個(gè)框架更適合開(kāi)發(fā)顯卡渲染應(yīng)用? Yii2 vs Phalcon:哪個(gè)框架更適合開(kāi)發(fā)顯卡渲染應(yīng)用? Jun 19, 2023 am 08:09 AM

在當(dāng)前信息時(shí)代,大數(shù)據(jù)、人工智能、云計(jì)算等技術(shù)已經(jīng)成為了各大企業(yè)關(guān)注的熱點(diǎn)。在這些技術(shù)中,顯卡渲染技術(shù)作為一種高性能圖形處理技術(shù),受到了越來(lái)越多的關(guān)注。顯卡渲染技術(shù)被廣泛應(yīng)用于游戲開(kāi)發(fā)、影視特效、工程建模等領(lǐng)域。而對(duì)于開(kāi)發(fā)者來(lái)說(shuō),選擇一個(gè)適合自己項(xiàng)目的框架,是一個(gè)非常重要的決策。在當(dāng)前的語(yǔ)言中,PHP是一種頗具活力的語(yǔ)言,一些優(yōu)秀的PHP框架如Yii2、Ph

Yii框架中的數(shù)據(jù)查詢:高效地訪問(wèn)數(shù)據(jù) Yii框架中的數(shù)據(jù)查詢:高效地訪問(wèn)數(shù)據(jù) Jun 21, 2023 am 11:22 AM

Yii框架是一個(gè)開(kāi)源的PHPWeb應(yīng)用程序框架,提供了眾多的工具和組件,簡(jiǎn)化了Web應(yīng)用程序開(kāi)發(fā)的流程,其中數(shù)據(jù)查詢是其中一個(gè)重要的組件之一。在Yii框架中,我們可以使用類似SQL的語(yǔ)法來(lái)訪問(wèn)數(shù)據(jù)庫(kù),從而高效地查詢和操作數(shù)據(jù)。Yii框架的查詢構(gòu)建器主要包括以下幾種類型:ActiveRecord查詢、QueryBuilder查詢、命令查詢和原始SQL查詢

Symfony vs Yii2:哪個(gè)框架更適合開(kāi)發(fā)大型Web應(yīng)用? Symfony vs Yii2:哪個(gè)框架更適合開(kāi)發(fā)大型Web應(yīng)用? Jun 19, 2023 am 10:57 AM

隨著Web應(yīng)用需求的不斷增長(zhǎng),開(kāi)發(fā)者們?cè)谶x擇開(kāi)發(fā)框架方面也越來(lái)越有選擇的余地。Symfony和Yii2是兩個(gè)備受歡迎的PHP框架,它們都具有強(qiáng)大的功能和性能,但在面對(duì)需要開(kāi)發(fā)大型Web應(yīng)用時(shí),哪個(gè)框架更適合呢?接下來(lái)我們將對(duì)Symphony和Yii2進(jìn)行比較分析,以幫助你更好地進(jìn)行選擇。基本概述Symphony是一個(gè)由PHP編寫的開(kāi)源Web應(yīng)用框架,它是建立

如何使用PHP框架Yii開(kāi)發(fā)一個(gè)高可用的云備份系統(tǒng) 如何使用PHP框架Yii開(kāi)發(fā)一個(gè)高可用的云備份系統(tǒng) Jun 27, 2023 am 09:04 AM

隨著云計(jì)算技術(shù)的不斷發(fā)展,數(shù)據(jù)的備份已經(jīng)成為了每個(gè)企業(yè)必須要做的事情。在這樣的背景下,開(kāi)發(fā)一款高可用的云備份系統(tǒng)尤為重要。而PHP框架Yii是一款功能強(qiáng)大的框架,可以幫助開(kāi)發(fā)者快速構(gòu)建高性能的Web應(yīng)用程序。下面將介紹如何使用Yii框架開(kāi)發(fā)一款高可用的云備份系統(tǒng)。設(shè)計(jì)數(shù)據(jù)庫(kù)模型在Yii框架中,數(shù)據(jù)庫(kù)模型是非常重要的一部分。因?yàn)閿?shù)據(jù)備份系統(tǒng)需要用到很多的表和關(guān)

如何在PHP8中使用Attributes管理代碼注解? 如何在PHP8中使用Attributes管理代碼注解? Oct 18, 2023 am 09:48 AM

如何在PHP8中使用Attributes管理代碼注解?隨著PHP8的發(fā)布,一個(gè)令人興奮的新功能引入了,那就是Attributes(特性)。Attributes是一種代碼注解的方式,使得我們可以以一種結(jié)構(gòu)化的方式為類、方法和屬性添加元數(shù)據(jù)。在本文中,我們將探討如何在PHP8中使用Attributes管理代碼注解,并提供一些具體的代碼示例。一、什么是Attrib

php框架laravel和yii區(qū)別是什么 php框架laravel和yii區(qū)別是什么 Apr 30, 2025 pm 02:24 PM

Laravel和Yii的主要區(qū)別在于設(shè)計(jì)理念、功能特性和使用場(chǎng)景。1.Laravel注重開(kāi)發(fā)的簡(jiǎn)潔和愉悅,提供豐富的功能如EloquentORM和Artisan工具,適合快速開(kāi)發(fā)和初學(xué)者。2.Yii強(qiáng)調(diào)性能和效率,適用于高負(fù)載應(yīng)用,提供高效的ActiveRecord和緩存系統(tǒng),但學(xué)習(xí)曲線較陡。

yii與Docker:容器化和部署您的應(yīng)用程序 yii與Docker:容器化和部署您的應(yīng)用程序 Apr 02, 2025 pm 02:13 PM

使用Docker容器化和部署Yii應(yīng)用的步驟包括:1.創(chuàng)建Dockerfile,定義鏡像構(gòu)建過(guò)程;2.使用DockerCompose啟動(dòng)Yii應(yīng)用和MySQL數(shù)據(jù)庫(kù);3.優(yōu)化鏡像大小和性能。這不僅涉及到具體的技術(shù)操作,還包括理解Dockerfile的工作原理和最佳實(shí)踐,以確保高效、可靠的部署。

Yii2 vs Symfony:哪個(gè)框架更適合API開(kāi)發(fā)? Yii2 vs Symfony:哪個(gè)框架更適合API開(kāi)發(fā)? Jun 18, 2023 pm 11:00 PM

隨著互聯(lián)網(wǎng)的快速發(fā)展,API成為了各種應(yīng)用間數(shù)據(jù)交換的重要方式。因此,開(kāi)發(fā)一款易于維護(hù)、高效、穩(wěn)定的API框架變得越來(lái)越重要。而在選擇API框架時(shí),Yii2和Symfony是兩個(gè)備受開(kāi)發(fā)者歡迎的選擇。那么,哪一個(gè)更適合API開(kāi)發(fā)呢?本文將對(duì)這兩個(gè)框架進(jìn)行比較,并給出一些結(jié)論。一、基本介紹Yii2和Symfony都是成熟的PHP框架,都有相應(yīng)的擴(kuò)展,可以用于開(kāi)

See all articles