2015-06-20 51 views
0

當我使用laravel中間件其路線是無法正常工作Laravel中間件重定向

<?php 

namespace App\Http\Controllers; 
use Auth; 
use App\Article; 
use App\Http\Requests; 
use Illuminate\Http\Request; 
use App\Http\Requests\ArticleRequest; 
use App\Http\Controllers\Controller; 
use Carbon\Carbon; 

//use Illuminate\Http\Request; 



class ArticlesController extends Controller 
{ 
    public function __construct(){ 
     $this->middleware('auth',['only'=>'create']); 
    } 
    // 
    public function index(){ 
     //return \Auth::user(); 
     $articles = Article::latest('published_at')->published()->get(); 
     return view('articles.index',compact('articles')); 
    } 

    public function show($id){ 
     $article = Article::findorFail($id); 
     //dd($article->published_at->addDays(8)->diffForHumans()); 

     return view('articles.show',compact('article')); 
    } 
    public function create(){ 
     if(Auth::guest()){ 
      return redirect('articles'); 
     } 
     return view('articles.create'); 
    } 
    public function store(ArticleRequest $request){ 
     /* 
     $input = Request::all(); 
     $input['published_at'] = Carbon::now(); 
     */ 
     $article = new Article($request->all()); 
     Auth::user()->articles()->save($article); 

     //Article::create($request->all()); 
     return redirect('articles'); 
    } 

    public function edit($id){ 
     $article = Article::findorFail($id); 
     return view('articles.edit', compact('article')); 
    } 

    public function update($id, ArticleRequest $request){ 
     $article = Article::findorFail($id); 
     $article->update($request->all()); 

     return redirect('articles'); 
    } 
} 

當我去http://localhost/lernlaravel/public/articles/create它工作正常 但是當我去http://localhost/learnlaravel/public/articles重定向到http://localhost/articles

index()方法用於列出文章,我可以如何解決它?

+0

您的服務器配置有問題。您應該將根文件夾指向「公共」。你在使用Apache,ngix嗎?通過PHP服務? – zeratulmdq

+0

我使用的是Apache –

回答

1

redirect()接受一個URL路徑,所以如果你想確保你的重定向可以在測試和生產環境下工作,我會將action()route()傳遞給你所有的應用程序重定向調用。在這種情況下,我會去與

return redirect(action ('[email protected]', $articles->id));

這樣Laravel會自動生成正確的URL路徑要處理該請求的控制器。

如果您選擇與route()一起使用,您需要在您的路線文件中命名路線,但是我發現使用資源豐富的控制器可以更輕鬆地採取行動。