2014-11-04 3 views
1

Я изучаю CakePHP и следую this учебник.CakePHP контроллер пользовательская функция не распознается

При внедрении элемента управления DELETE я решил создать пользовательскую функцию, чтобы содержать некоторые дублирующие строки кода. Однако моя пользовательская функция не распознается, когда я пытаюсь ее вызвать.

Мой код выглядит следующим образом:

class PostsController extends AppController{ 
public $helpers = array('Html', 'Form'); 

public function index(){ 
    $this->set('posts', $this->Post->find('all')); 
}//index 

public function view($id = null){ 
    if(!$id){ 
     throw new NotFoundException(__('Invalid Post')); 
    } 

    $post = $this->Post->findById($id); 
    if(!$post){ 
     throw new NotFoundException(__('Invalid Post')); 
    } 

    $this->set('post', $post); 
}//view 

public function add(){ 
    if($this->request->is('post')){ 
     $this->Post->create(); 
     if($this->Post->save($this->request->data)){ 
      $this->Session->setFlash(__('Your post has been saved.')); 
      return $this->redirect(array('action'=>'index')); 
     } 
     $this->Session->setFlash(__('Unable to add your post.')); 
    } 
}//add 

public function edit($id=null){ 

    idCheck($id); 

    $post = $this->Post->findById($id); 
    if(!$post) 
     throw new NotFoundException(__('Invalid post')); 

    if($this->request->is(array('post', 'put'))){ 
     $this->Post->id = $id; 
     if($this->Post->save($this->request->data)){ 
      $this->Session->setFlash(__('Your post has been updated!')); 
      return $this->redirect(array('action'=>'index')); 
     } 
     $this->Session->setFlash(__('Unable to update your post.')); 
    } 

    if(!$this->request->data) 
     $this->request->data = $post; 
}//edit 

public function delete($id=null){ 
    idCheck($id); 
} 

public function idCheck($id=null){ 
    if(!$id) 
     throw new NotFoundException(__('Post ID required')); 

    if(!is_numeric($id)) 
     throw new NotFoundException(__('Post ID must be numeric')); 
} 
} 

Все, что я пытаюсь сделать, это назвать мою idCheck() функцию, но я получаю эту ошибку:

Error: Call to undefined function idcheck()

+1

Вы не можете использовать его так, вы должны называть его '$ this-> idCheck ($ id);' –

ответ

0

в CakePHP вы не можете функции вызова.

Смотрите вы играете с объектом, и если вы хотите, чтобы вызвать функцию, которая принадлежит к текущему объекту, используйте

$this->Your_function(); 

По вашему вопросу, использование:

$this->idCheck($id); 

Это означает, что вызов функции idCheck() функция для текущего объекта.

+0

Спасибо. Я забыл объектно-ориентированный характер кода. Правильно ли вызывать функцию staticly - i: e - $ this :: idCheck ($ id) ?? – sisko

+0

Привет статические функции вызывается классом, а не объектом. –

+0

Спасибо. Очень признателен – sisko

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