У меня есть этот метод в контроллере cakephp. Здесь я пытаюсь сохранить данные подписки пользователя в таблице подписки на основе того, был ли пользователь уже зарегистрирован на сайте или нет. У меня два поля формы: Name
и Email
. Поэтому, если пользователь вошел в систему и нажимает кнопку подписки, всплывающее окно формы выдает свое имя, а электронная почта уже заполнена в ящиках, и если он представит его, он будет подписан. Когда пользователь, который не зарегистрирован и не вошел в систему, но просто хочет подписаться, у него будет пустая подписная форма для заполнения.Минимизация нескольких, если условия else в cakephp
Позже я добавил некоторые изменения, которые, если любой зарегистрированный или не зарегистрированный пользователь хочет подписаться с тем же электронным письмом, всплывающее окно покажет: «вы уже зарегистрированы». До сих пор я это делал. Он работает нормально, но с множеством условий if и else. Любая идея о том, как свести к минимуму это, будет полезна. Я новичок в cakephp и обо всем этом. Мой метод контроллера код ниже:
function subscription_add() {
if(!empty($this->data)){
if($this->Session->check('User')){
$is_subscribed = $this->Subscription->find('count', array('conditions'=>array('Subscription.email' => $this->data['Subscription']['email'])));
if($is_subscribed > 0){
$this->Session->setFlash('You are already Subscribed !','default',array(),'E');
$this->redirect(array('action' => 'index'));
}
else{
$this->data['Subscription']['user_type'] = 1;
$this->data['Subscription']['user_id'] = $this->Session->read('User.id');
$this->Subscription->create();
if ($this->Subscription->save($this->data)) {
$this->Session->setFlash('Congrats ! You are Subscribed ', 'default', array(), 'S');
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash('You are not subscribed. Please, try again.', 'default',array(),'E');
}
}
}
else{
$subscribed = $this->Subscription->find('count', array('conditions'=>array('Subscription.email' => $this->data['Subscription']['email'])));
if($subscribed > 0){
$this->Session->setFlash('You are already Subscribed !','default',array(),'E');
$this->redirect(array('action' => 'index'));
}else{
$this->Subscription->create();
if ($this->Subscription->save($this->data)) {
$this->Session->setFlash('Congrats ! You are Subscribed ', 'default', array(), 'S');
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash('You are not subscribed.. Please, try again.', 'default',array(),'E');
}
}
}
}
}
Thanx Друг для suggesting.But я хочу, если это может быть сделано через coding.It будет иметь большую помощь, если вы поможете мне в этом. @ mcgowan.b –
Вы можете вызвать метод find один раз и сохранить результат в переменной, которую вы можете использовать вместо вызова find несколько раз .......... –