模型层和控制器层对数据处理

webzhou1人参与 次点击
PHP实战视频教程大全

 在看了TP5第三季的广告添加之后对模型层和控制器层对数据处理有不明白,请童老师和同学们指点一下,谢谢!问题如下图所示:

控制器层:

<?php

namespace app\admin\controller;

class Ad extends Common

{

protected $field=true;

public function add()

{

if(request()->isPost()){

$data=input(‘post.’);

// 验证

$validate=validate(‘ad’);

if(!$validate->check($data)){

$this->error($validate->getError());

}

$ad=model(‘ad’);

$ad->data($data);

dump($ad); die;

$add=$ad->save();

if($add){

$this->success(‘添加广告成功!’,’lst’);

}else{

$this->error(‘添加广告失败!’);

}

}

$adposRes=db(‘adpos’)->field(‘id,name’)->select();

$this->assign([

‘adposRes’=>$adposRes,

]);

return view();

}

}

模型层:

<?php

namespace app\admin\model;

use think\Model;

class Ad extends Model

{

protected $field=true;

protected static function init()

{

Ad::beforeInsert(function ($ad) {

$data=input(‘post.’);

if($data[‘type’]==1){

if($_FILES[‘img_src’][‘tmp_name’]){

$file = request()->file(‘img_src’);

$info = $file->move(ROOT_PATH . ‘public/static/index’ . DS . ‘ad’);

if($info){

$imgSrc=$info->getSaveName();

$ad[‘img_src’]=$imgSrc;

dump($ad); die;

}

}

}

if($data[‘on’]==1){

db(‘ad’)->where(array(‘adpos_id’=>$data[‘adpos_id’]))->update([‘on’=>0]);

}

});

}

}

问题:为什么这俩出打印处理的$ad对象是不一样的,控制器层$ad对象没有img_src字段,而模型层已经对img_src进行赋值,按理说应该是有!对于模型层用 前置钩子(添加前事件)不是太明白,img_src的值是怎么被写入数据表中?请童老师赐教!我的QQ(2546422732)

  • 该话题由 webzhou 于 2018-02-27 7:39 修正。
    1 讨论 | 直到 2018-02-28 10:52:52
  • webzhou
    1

     问题已解决

  • 抱歉,回复话题必需登录。