2012-05-16 2 views
1

Я совершенно новый на cakephp, несмотря на то, что использовал его несколько лет назад в старой версии cakephp для школы. Теперь для этого требуется использовать $ session-> flash(); для отображения наших сообщений об ошибках. Я положил ее на мой взгляд/макеты/default.ctp и это то, что я получил

Call to a member function flash() on a non-object in 
C:\xampp\htdocs\blog\app\View\Layouts\default.ctp on line 9 

вот мои коды:

class PostsController extends AppController { 
    var $name = 'Posts'; 
    var $helpers = array('Html', 'Form', 'Session'); 

public function delete($id = null) { 
    $this->Post->id = $id; 
     if (!$id) { 
      $this->Session->setFlash(_('Post does not exist!', true)); 
      $this->Session->redirect(array('action'=>'index')); 
     } 
     if ($this->Post->delete($id)) { 
      $this->Session->setFlash(__('Post deleted', true)); 
      $this->redirect(array('action' => 'index')); 
     } 
    } 
} 
+1

Вы пробовали '$ this-> Session-> flash()'? –

ответ

2

Вы должны использовать $this->Session->flash() в своем макете, $session->flash() - это подход, используемый в CakePHP 1.x.

+0

Спасибо. Думаю, это также относится к тому, как $ html-> Link больше не используется. Нам нужен $ this-> html-> Link. Должно было видеть это, поскольку я назвал флеш с $ this-> Session-> setFlash(). –

+0

Да, в CakePHP 2.x все помощники используются как '$ this-> HelperName-> method()'. – dhofstet

-1

$ this-> session-> setFlash (__ ('Post deleted ', true)); Зачем использовать двойной балл, вы можете просто использовать

$ this-> Session-> setFlash ('Post deleted');

+0

Это правда lol. Хорошо, маленькая шутка, однако, я не верю, что это причина проблемы. истина ничего не делает честно. это просто. –

+1

__ используется для интернационализации и служит там –

+0

http://book.cakephp.org/1.3/ru/view/1229/Internationalizing-Your-Application –

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