谁一开始就是大神?

關於attributes的問題[2.0]

這邊是我 models 的 code

namespace app\models;

use Yii;
use app\models\Api;

class Order_api extends Api
{
    public $account_id;
    public $create_date;
    public $auth_code;

    public function rules()
    {
        return [
            [['account_id','auth_code'], 'required']
        ];
    }

    public function check_params($standard ,$data)
    {
        return parent::check_params($standard ,$data);
    }
}

這邊是 controller 的 code

public function actionTest()
    {	
    	$app_order = [
    		'account_id' => '1',
    		'create_date' => '2',
    		'auth_code' => '3'
    	];
    	$a = new \app\models\Order_api;
    	$a->attributes = $app_order;   <====== 這邊為什麼我把 models 的 public rules() 整個function 移除
    	//$a->account_id = '1';     
    	$a->attributes;    
        var_dump($a);                  <====== 這邊印出來的卻是 每個成員變數都是 NULL
    }

有查看 yii\base\Models attributes() 內部的寫法 他也指示用 ReflectionClass 反映有哪些 public name 而已

想請教 $a->attributes = $app_order; 當我的 models 有 public rules(){ … } 的時候
var_dump($a); 的成員變數是有被賦予值得,但我移除 public rules(){ … }之後成員變數卻都是 NULL
想知道他流程是怎麼跑的為什麼只有 NULL 而沒有值 !!

剛剛沒有看 _set && _get 現在知道怎麼設定了~~~ 希望也可以分享您知道的流程給我參考

$a->attributes = $app_order; 实际调用的是 $a->setAttributes($app_order);
而调用setAttributes方法赋值时, 默认只加载safaAttributes;
所谓的safeAttributes, 指的就是 : 在rules中有声明验证规则的attribute;
这就是rules移掉, 赋值后全是null的原因
所以 : 在rules里面把需要的属性都声明到, 即便是safe也可以.

赞(0) 打赏
未经允许不得转载:菜鸟之家 » 關於attributes的問題[2.0]

评论 抢沙发

登录

找回密码

注册