/** * Creates a new Subscriber model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Subscriber(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model]); } }
public function save($request) { $subscriber = new Subscriber(); $subscriber->email = $request->input('email'); $subscriber->ip = $request->input('ip'); if ($subscriber->save()) { return $subscriber->id; } else { return false; } }
/** * Creates a new Subscriber model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Subscriber(); $modelsPhone = [new Phone()]; if ($model->load(Yii::$app->request->post())) { $model->user_id = Yii::$app->user->getId(); if ($model->save()) { $modelsPhone = Model::createMultiple(Phone::classname()); Model::loadMultiple($modelsPhone, Yii::$app->request->post()); // validate all models $valid = $model->validate(); $valid = Model::validateMultiple($modelsPhone) && $valid; if ($valid) { $transaction = \Yii::$app->db->beginTransaction(); try { if ($flag = $model->save(false)) { foreach ($modelsPhone as $modelPhone) { $modelPhone->subscriber_id = $model->id; if (!($flag = $modelPhone->save(false))) { $transaction->rollBack(); break; } } } if ($flag) { $transaction->commit(); return $this->redirect(['view', 'id' => $model->id]); } } catch (Exception $e) { $transaction->rollBack(); } } } } else { return $this->render('create', ['model' => $model, 'modelsPhone' => empty($modelsPhone) ? [new Phone()] : $modelsPhone]); } }
/** * Handle the event. * * @param \App\Events\WechatUserSubscribed $event * @return \App\Models\Message */ public function handle(WechatUserSubscribed $event) { $m = $event->message; /** * openId is always unique to our official account, so if user subscribes * again, we just need to toggle un-subscribed flag. */ if ($subscriber = Subscriber::where('openId', $m->fromUserName)->where('unsubscribed', true)->first()) { $subscriber->unsubscribed = false; } else { $subscriber = new Subscriber(); $subscriber->openId = $m->fromUserName; } $subscriber->save(); // Link profile with subscriber if subscribe comes from profile page. if ($key = $m->messageable->eventKey) { Profile::find(Str::substr($key, Str::length('qrscene_')))->update(['weixin' => $m->fromUserName]); event(new ChangeSubscriberGroup($subscriber)); } return $this->greetMessage($m->fromUserName, !is_null($key)); }