cari
Rumahrangka kerja phpYIIyii中为模型的attributes赋值失败

yii中为模型的attributes赋值失败

Feb 20, 2020 am 11:01 AM
attributesyii

yii中为模型的attributes赋值失败

问题:

Yii框架中不能直接给模型的attributes赋值。

首先看一下源码:

$menuId = isset($_GET['mId']) ? $_GET['mId'] : 0;
if ($menuId) {
    $menu = MenuTree::model()->findByPk($menuId);
    if(isset($_POST['MenuTree'])){
        var_dump($menu->attributes); //在这里跟踪输出的数据正常,跟表单中填写的一致
        $menu->attributes = $_POST['MenuTree']; //对attributes进行赋值
        var_dump($menu->attributes); //输出$menu模型中的attributes,不正常,结果并不是POST接收到的值,而是数据库原有的值
        if($menu->save()){
            Yii::app()->user->setFlash('success',"恭喜您,修改成功,请继续!");
            $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');
}

(相关文章教程推荐:yii框架

这是一个页面的action代码,看代码中的注释可以看到出现的错误,不接受POST的赋值,试过使用setAttributes函数也一样不接受,输出的还是原数据库的值,但是用updateByPk操作就可以,跟踪了一下setAttributes函数,发现函数定义如下:

 
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函数代码可以看到,在对attributes赋值时进行安全检查,所以想到原因可能出现模型的rules没有对那几个表单中修改的字段设置为安全,找到原因,解决方案就出来了,在model的rules中,把想要修改的字段的属性设置为安全即可。

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...
    );
}

更多编程相关内容,请关注php中文网编程入门栏目!

Atas ialah kandungan terperinci yii中为模型的attributes赋值失败. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Yii: Rangka Kerja Pembangunan RapidYii: Rangka Kerja Pembangunan RapidApr 14, 2025 am 12:09 AM

YII adalah rangka kerja berprestasi tinggi berdasarkan PHP, sesuai untuk perkembangan pesat aplikasi web. 1) Ia mengamalkan reka bentuk seni bina dan komponen MVC untuk memudahkan proses pembangunan. 2) Yii menyediakan fungsi yang kaya, seperti Activerecord, Restfulapi, dan lain -lain, yang menyokong kesesuaian dan pengembangan yang tinggi. 3) Menggunakan alat GII dengan cepat dapat menghasilkan kod CRUD dan meningkatkan kecekapan pembangunan. 4) Semasa debugging, anda boleh menyemak fail konfigurasi, gunakan alat debugging dan melihat log. 5) Cadangan Pengoptimuman Prestasi termasuk menggunakan cache, mengoptimumkan pertanyaan pangkalan data dan mengekalkan kebolehbacaan kod.

Keadaan semasa yii: melihat popularitinyaKeadaan semasa yii: melihat popularitinyaApr 13, 2025 am 12:19 AM

Yiiremainspopularbutislessfavoredthanlaravel, withabout14kgithubstars.itexcelsinperformanceAndactiverecord, buthasasteperlearningcurveandasmallerecosystem.it'sidealfordevelopersprioritizingefficyoverovasystem.

Yii: Ciri -ciri dan Kelebihan Utama DijelaskanYii: Ciri -ciri dan Kelebihan Utama DijelaskanApr 12, 2025 am 12:15 AM

Yii adalah rangka kerja PHP berprestasi tinggi yang unik dalam seni bina komponennya, ORM yang kuat dan keselamatan yang sangat baik. 1. Senibina berasaskan komponen membolehkan pemaju untuk memasang fungsi secara fleksibel. 2. ORM yang berkuasa memudahkan operasi data. 3. Build-in Multiple Security Functions Untuk memastikan keselamatan aplikasi.

Senibina Yii: MVC dan banyak lagiSenibina Yii: MVC dan banyak lagiApr 11, 2025 pm 02:41 PM

Rangka kerja YII mengamalkan seni bina MVC dan meningkatkan fleksibiliti dan skalabilitasnya melalui komponen, modul, dan lain -lain. 1) Mod MVC membahagikan logik aplikasi ke dalam model, pandangan dan pengawal. 2) Pelaksanaan MVC YII menggunakan pemprosesan permintaan penghalusan tindakan. 3) YII menyokong pembangunan modular dan meningkatkan organisasi dan pengurusan kod. 4) Gunakan pengoptimuman pertanyaan cache dan pangkalan data untuk meningkatkan prestasi.

Yii 2.0 Deep Dive: Penalaan & Pengoptimuman PrestasiYii 2.0 Deep Dive: Penalaan & Pengoptimuman PrestasiApr 10, 2025 am 09:43 AM

Strategi untuk meningkatkan prestasi aplikasi YII2.0 termasuk: 1. Pengoptimuman pertanyaan pangkalan data, menggunakan QueryBuilder dan Activerecord untuk memilih bidang tertentu dan membatasi set hasil; 2. Strategi caching, penggunaan data rasional, pertanyaan dan cache halaman; 3. Pengoptimuman peringkat kod, mengurangkan penciptaan objek dan menggunakan algoritma yang cekap. Melalui kaedah ini, prestasi aplikasi Yii2.0 dapat ditingkatkan dengan ketara.

Pembangunan API Yii Restful: Amalan & Pengesahan TerbaikPembangunan API Yii Restful: Amalan & Pengesahan TerbaikApr 09, 2025 am 12:13 AM

Membangunkan API RESTful dalam rangka Yii boleh dicapai melalui langkah -langkah berikut: Menentukan pengawal: Gunakan Yii \ REST \ ActiveController untuk menentukan pengawal sumber, seperti usercontroller. Konfigurasikan Pengesahan: Pastikan keselamatan API dengan menambahkan mekanisme pengesahan HTTPBearer. Melaksanakan paging dan sorting: Gunakan Yii \ Data \ ActiveDataprovider untuk mengendalikan logik perniagaan yang kompleks. Pengendalian Ralat: Konfigurasi Yii \ Web \ errorHandler untuk menyesuaikan respons ralat, seperti pengendalian apabila pengesahan gagal. Pengoptimuman Prestasi: Gunakan mekanisme caching YII untuk mengoptimumkan sumber yang sering diakses dan meningkatkan prestasi API.

Kerangka Yii Lanjutan: Menguasai Komponen & SambunganKerangka Yii Lanjutan: Menguasai Komponen & SambunganApr 08, 2025 am 12:17 AM

Dalam rangka Yii, komponen adalah objek yang boleh diguna semula, dan sambungan adalah plugin yang ditambahkan melalui komposer. 1. Komponen diterapkan melalui fail atau kod konfigurasi, dan gunakan bekas suntikan ketergantungan untuk meningkatkan fleksibiliti dan kesesuaian. 2. Kembangkan pengurusan melalui komposer untuk meningkatkan fungsi aplikasi dengan cepat. Menggunakan alat ini dapat meningkatkan kecekapan pembangunan dan prestasi aplikasi.

Yii Theming and Templating: Membuat antara muka yang indah & responsifYii Theming and Templating: Membuat antara muka yang indah & responsifApr 07, 2025 am 12:03 AM

Theming dan menggoda rangka kerja YII mencapai gaya laman web dan penjanaan kandungan melalui direktori tema dan pandangan dan susun atur fail: 1. Theming menguruskan gaya dan susun atur laman web dengan menetapkan direktori tema, 2.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa