2015-01-29 2 views
-2

У меня есть этот метод в контроллере 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'); 
         } 
        } 
       } 


      } 
     } 

ответ

0

Лично я хотел бы использовать проверку модели на поле электронной почты, чтобы проверить, если кто-то уже зарегистрирован. Нет необходимости в половине этого кода, так как инфраструктура позаботится об этом для вас.

Documentation

+0

Thanx Друг для suggesting.But я хочу, если это может быть сделано через coding.It будет иметь большую помощь, если вы поможете мне в этом. @ mcgowan.b –

+0

Вы можете вызвать метод find один раз и сохранить результат в переменной, которую вы можете использовать вместо вызова find несколько раз .......... –

Смежные вопросы