2013-02-14 1 views
-1

Я разрабатываю приложение в CakePHP 1.3. Все работает нормально, но есть одна ошибка. Когда я использую redirect() в моей .ctp странице он дает ошибкуНеустранимая ошибка: вызов неопределенного метода View :: redirect() cakephp

Fatal error: Call to undefined method DebugView::redirect() 

Как редирект работает нормально, когда я использую его в контроллер. я включил помощникам следующим образом в моем AppController

var $helpers = array('Html', 'Form','Session'); 

Пожалуйста, помогите заранее спасибо

ответ

2

Вы никогда не перенаправлять (или выход любой заголовок, если это возможно) в окне просмотра слоя. Используйте контроллер, чтобы сделать это. Затем представление должно отображать только выходные данные в соответствии с желаемым форматом вывода (html, xml, json, ...). Материал заголовка является частью ответа и ответственности контроллера (и в 2.x самом классе ответа).

Так что ваше наблюдение, что оно будет работать с контроллерами, а не внутри, является правильным. «Вызов неопределенного метода» всегда является хорошим индикатором того, что метод не доступен в этой области. Перенаправления, являющиеся частью «логики», делают их доступными только в контроллерах и компонентах. Никогда в виду (вывод после всей логики).

+0

Тогда какой вариант я должен использовать. Заголовок PHP? –

+2

нет альтернативный. исправьте неисправный код и используйте только redirect() из своего контроллера и/или компонентов. если вы считаете, что вам нужно это сделать, вы все ошиблись и вам нужно реорганизовать свой код. – mark

+0

Я извлекаю данные из базы данных, а затем извлекаю значения из массива, используя foreach в представлении. И затем сравнивая конкретное поле с другим полем, а затем, если успех останется на странице, перенаправить. Я думаю, что мой код не ошибочен, но в соответствии с ситуацией, в которой я нуждался! –

0

В контроллере:

$this->redirect('url, absolute or relative here'); 

Done.

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