2017-02-17 17 views
2

Мой метод Destory на контроллере, как это:Как отображать сообщение или неудачно использовать ответ на просмотр? (Laravel 5,3)

public function destroy($id) 
{ 
    try{ 
     if($this->product_service->destroy($id)){ 
      return $this->respond(['status' => 'success']); 
     }else{ 
      return $this->respond(['status' => 'failed']); 
     } 
    }catch (\Exception $e){ 
     return $this->respondWithError(); 
    } 
} 

Моя точка зрения такова:

@if (session('status')=='success') 
    <div class="alert alert-success"> 
     <ul> 
      <li>Delete Success</li> 
     </ul> 
    </div> 
@elseif (session('status')=='failed') 
    <div class="alert alert-warning"> 
     <ul> 
      <li>Delete Failed</li> 
     </ul> 
    </div> 
@endif 

После того, как метод уничтожения выполняется, он не показывает успех статус или не

Почему это не работает?

UPDATE

Мой контроллер продлить ApiController

И в ApiController существует метод так:

public function respond($data, $headers=[]) 
{ 
    return response()->json($data,$this->getStatusCode(), $headers); 
} 
+0

На самом деле вы ничего не добавляете на сеанс. Вы также возвращаете ответы json, так что также сложно сказать, когда ваш просмотр загружается точно. – user3158900

ответ

1

Я хотел бы предложить вам использовать этот пакет для этого:

https://github.com/laracasts/flash

Пожалуйста, прочтите там документацию, это очень хорошо объяснено.

ИЛИ

Если вы хотите сделать это с помощью пользовательского кода:

контроллер

public function destroy($id) 
{ 
    if($this->product_service->destroy($id)){ 
    return view('viewname', ['class' => 'success', 'message' => 'Delete Success']); 
    } else{ 
    return view('viewname', ['class' => 'success', 'message' => 'Delete Failed']); 
    } 
} 

Вид:

<div class="alert alert-{{ $class }}"> 
    <ul> 
     <li>{{ $message }}</li> 
    </ul> 
    </div> 
+0

Я хочу использовать '$ this-> reply'. Не другие. Разве это не может? –

+0

НЕТ, он не может, ..где вы читаете об этом методе? Можете ли вы указать URL? –

+0

Мой контроллер расширяет ApiController. В моем ApiController существует такой метод: 'public function reply ($ data, $ headers = []) { return response() -> json ($ data, $ this-> getStatusCode(), $ headers); } ' –

0

Вы можете просто позвонить:

return \Redirect::back()->with('status', 'your status here...'); 

и что должно быть.

Или вы можете использовать Response:json, если вы хотите, чтобы вернуть json object, удобный с AJAX как следует:

return \Response::json(['status' => 'your status here...'], 200); 

, а затем вы можете поймать status на представлении с использованием ajax как следует:

errorsHtml = '<div class="alert alert-danger"><ul>'; 
$.each(responseText, function(k, v){ 
errorsHtml += '<li>' + v + '</li>'; 
}); 
errorsHtml += '</ul></div>'; 
$("#feedback").append(errorsHtml); 

Обратите внимание, что вы можете передать любые другие данные в пределах \Response::json метода:

return \Response::json(['status' => 'your status here...', 'data' => $data], 200);