2013-05-31 1 views
1

Я не могу отключить отладчик для действия, которое по какой-либо причине отправляет электронное письмо. Письмо содержит отладочные сообщения. Ниже приведен код, который я использую. У меня Configure::write('debug', 2) в core.php, так как это среда разработки. Я также попытался поместить beforeFilter() в AppController, но это ничего не делает. Нет другого действия, которое называется email. Что-то не так с этим кодом?CakePHP 1.3: не удалось отключить отладчик в beforeFilter()

Я также использую компонент DebugKit.Toolbar. Когда я установил Configure::write('debug', 0) в core.php, дополнительные сообщения в сообщении электронной почты также исчезнут.

class TestsController extends AppController { 
      ... 

    function beforeFilter() { 
     if(in_array($this->action, array('email'))) { 
      Configure::write('debug', 0); 
     } 
    } 

    public function email() { 
       // send email 
       ... 
      } 
} 

Дополнительные сообщения, которые я получаю в сообщении электронной почты являются

<!-- Starting to render - email\text\test_text_message --> 
*email content here* 
<!-- Finished - email\text\test_text_message --> 
+1

Если вы используете компонент и т. Д., Вы уже инициализировали его с помощью отладки 2 задолго до того, как вы действительно отключите отладку. вам потребуется вручную создать компонент для последующей перезаписи. Или просто установите debug на 0 раньше (в конструкторе и т. Д.). Он все еще чувствует себя немного грязно, чтобы делать то, что вы делаете. – mark

+0

@mark Как письмо будет содержать отладочные сообщения. Они появятся только при создании шаблона электронной почты. Все остальные данные не должны входить в электронную почту. – cgTag

+0

Да, на самом деле, я использую компонент DebugKit.Toolbar. – musicliftsme

ответ

2

Попробуйте отключить для всего контроллера.

Configure::write('debug', 0); 

class TestsController extends AppController { 
      ... 

    public function email() { 
      // send email 
      ... 
    } 
} 

Это должно выключить отладку, прежде чем какие-либо из внутренних компонентов инициализируется, но после того, как самозагрузка завершил так Configure доступно.

+0

Хм это работает! Но я не уверен, почему 'beforeFilter()' не будет работать. Есть ли у вас какие-либо идеи? Я хотел бы отключить его для определенного действия, если это возможно. – musicliftsme

+0

@Youn, я не только сообщение об отладке, которое вы получаете, это не тот, который я видел раньше. Я не использую DebugKit, но компонент электронной почты CakePHP ничего не делает, пока вы не отправите электронное письмо. Так странно. – cgTag

+0

@Youn oh Я уверен, что они зацепили в Views так или иначе, чтобы получить обратные вызовы на рендерах. Таким образом, отключение отладки в файле beforeFilter скорее всего задержится, так как крючки уже установлены. Вам также нужно будет отцепить DebugKit. – cgTag