性感的农民

性感的农民

有个性,不签名

  • 财富值7680
  • 威望值285
  • 总积分11410

个人信息

  • 回复了 的说说
    今天是签到第60天,也就是说满两个月。也就是在今天提出离职申请,月底走人。6月,哥依然单身。求女神带走!!!
    对雌都感兴趣么? 我朋友的公司在找yii大牛,可以联系一下。http://search.51job.com/job/68594511,c.html
  • 赞了回答

    beforeAction返回的应该是true或者false,要直接输出的话,应该还是返回false,通过response指定输出的内容,类似这样

    Yii::$app->response->format = Response::FORMAT_JSON;
    Yii::$app->response->data = array(
        'status' => -1,
        'message' => '请先登录',
        'url' => \Yii::$app->getHomeUrl()
    );
    return false;
    
  • 2015-05-26 已签到
    连续签到16天,获得了20个金钱
  • 回复了 的回答

    updateAll()只返回受影响的行数,那个行数在一个事件里能玩出什么名堂呢?所以afterUpdate对于updateAll来说没有任何意义。你想干什么,就在调用updateAll()之后调用一个函数就好了,或者触发一个自定义的事件。

    比较update()updateAll()的区别。或者看这两个函数的框架源码。

    呵呵,不要纠结分的事情,能帮到人也是很开心的。之前我就和舰长说不好意思再答题了,大家一起玩才好玩嘛。

    函数就不用说了吧。下面贴一点我原来学习Event用的代码片段你参考一下吧:

    1 定义Event派生类。你要传参给事件句柄才需要这个类,不传参时trigger函数的Event使用缺省值null(第二个参数)。

    <?php
    namespace app\modules\advertise\components;
    use yii\base\Event;
    class CrudEvent extends Event
    {
        public $id;
    }
    

    2 定义事件句柄,就是事件被触发之后执行的函数,本例是写成一个杂项类Misc的静态方法:

    namespace common\helpers;
    ......
        public static function addCustomer($event)
        {
            $id = $event->id;
            die("addCustomer, id: $id");
        }
    
        public static function delCustomer($event)
        {
            $id = $event->id;
            die("delCustomer, id: $id");    
        }
    

    3 定义事件名称,并与事件句柄绑定:事件名称,通常是写成类的const属性,大写。本例写在控制器中,并重载beforeAction函数,绑定“事件名称”和“事件句柄”

    use app\modules\advertise\components\CrudEvent;         #上面的事件类
    ......
        const EVENT_ADDCUSTOMER = 'add-customer';       #用户添加了客户,该用户的客户总数+1
        const EVENT_DELCUSTOMER = 'del-customer';       #用户删除了客户,该用户的客户总数-1
    ......
    
        /**
         * @inheritdoc
         */
        public function beforeAction($action)
        {
            if (parent::beforeAction($action)) {
                $this->on(self::EVENT_ADDCUSTOMER, ['common\helpers\Misc','addCustomer']);
                $this->on(self::EVENT_DELCUSTOMER, ['common\helpers\Misc','delCustomer']);
                return true;
            } else {
                return false;
            }
        }
    
    
    

    4 触发事件。本例是在控制器的actionCreate中测试的,按照MVC的思想,放在Model的afterSave方法中更好。

    $this->trigger(self::EVENT_ADDCUSTOMER, new CrudEvent(['id'=>$id]));
    

    5 测试。添加记录后看到浏览器显示addCustomer, id: 2,就说明trigger成功了。

  • fileinput是个例外,无论insert操作还是update,正常情况在表单中选择文件的地方是清空的,可能是w3c的定义。你也可以在接收POST数据之前保存文件路径的字段的值,接收post数据之后如果发现浏览器没有新文件upload,那么save之前还原你之前保存的值即可。

    你的方法也可以,有个负面影响就是用户体验会下降一些,和正常的文件上传表单感觉不一样。

  • 回复了 的说说
    新工作
    别被新公司的黑话吓到,很唬人的东西其实也就那么回事。和昨天的自己比就可以了。
  • updateAll()只返回受影响的行数,那个行数在一个事件里能玩出什么名堂呢?所以afterUpdate对于updateAll来说没有任何意义。你想干什么,就在调用updateAll()之后调用一个函数就好了,或者触发一个自定义的事件。

    比较update()updateAll()的区别。或者看这两个函数的框架源码。

  • 回复了 的说说
    :smile 表情的发布姿势是怎样的啊?
    does this work? \ue116
  • 回复了 的说说
    :smile 表情的发布姿势是怎样的啊?
    测试 😄 or 😢
  • 可能的原因是unset($session[$sessionKey]);在你的第二次POST请求到达之前就执行了,所以session机制不好使。如果在不用unique规则、不用table的key冲突、也不用js屏蔽button的前提下,想在服务器端避免重复insert,可以在book中重载ActiveRecord的beforeSave方法,在里面查重,根据情况返回true/false。

11410/20000
资料完整度
60/100
用户活跃度
0/100

Ta的关注

29

Ta的粉丝

49

Ta的访客

106