2017-02-17 52 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 

destroy方法执行时,它不显示状态的成功或失败的

为什么它不起作用?

UPDATE

我的控制器扩展ApiController

而且在ApiController存在的方法是这样的:

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

你实际上并没有在任何地方向会话添加任何东西。您也正在返回json响应,因此很难说您的视图何时正确加载。 – user3158900

回答

1

我会建议你使用这个包是:

https://github.com/laracasts/flash

请阅读那里的文档,它很好地解释。

OR

如果你想这样做,使用自定义代码:

控制器

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-> respond'。不是其他人。它不能吗? –

+0

不,它不能,..你在哪里阅读关于该方法?你能给URL吗? –

+0

我的控制器扩展ApiController。在我的ApiController存在的方法是这样的:'公共函数响应($数据,$头= []) { 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); 

,然后你可以使用ajax视图赶上status如下:

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); 
相关问题