2015-01-19 1 views
0

Есть Кохана эквивалентно следующему (производный от Symfony 1.4):Kohana 3.x - возврат от действия как можно скорее, если ошибка, обнаруженная

public function ajax_win() { 

    try { 
     ... 
    } catch Exception($e) { 

     $response['errors'] = array($e->getMessage()); 

     $this->template->content = json_encode($response); 

     // Id like to return here, early return if error encountered 
     // Symfony example 
     // Is there a Kohana counterpart, or just do empty return? 
     return sfView::NONE; 
    } 

    // More code here, which is why I want early return, so I don't have to nest conditionals 
    .... 
} 
+0

Что вас удерживает? Нет ожидаемого результата для действий и для всех системных/модульных методов, которые вы можете проверить API (http://kohanaframework.org/3.3/guide-api/). Или я что-то упускаю (не знаю о Симфонии здесь)? – kero

+0

Просто интересно, какая правильная процедура «кохана» здесь, просто пустое возвращение? –

+0

Ну, это зависит от того, где вы находитесь в коде. Вы просто хотите завершить текущий объем/метод или всю процедуру? – kero

ответ

0

Таким образом, вы находитесь в ситуации внутри действия контроллер, и дон» t хотите, чтобы любой другой контент отображался, но ваша кодированная JSON переменная.

Вам не нужно ничего return, так как это не так, как работают контроллеры. Однако вам необходимо изменить $this->response.

Если вы находитесь в среде Controller_Template, также важно установить $this->auto_render к FALSE (или что-то, что не TRUE), поэтому метод after() не отменяет все, что вы пробовали.

Этот код не проверен, но должен сделать трюк.

public function ajax_win() { 

    try { 
     ... 
    } catch Exception($e) { 
     $data['errors'] = array($e->getMessage()); 
     $response = new Response(); 
     $response->body(json_encode($data)); 
     $this->response = $response; 
     return; 
    } 

    // More code here, which is why I want early return, so I don't have to nest conditionals 
    .... 
} 

Для получения дополнительной информации вы можете проверить руководство, где Request Flow заявки подробно описано.

+0

Спасибо, просто хотел проверить, было ли какое-то конкретное возвращение Коханы, которое было необходимо. Для записи некоторые фреймворки, например Symfony, требуют возврата непустого значения, в противном случае он предполагает успех и будет пытаться загрузить шаблон. –