2016-03-15 211 views
1

我使用Laravel 5並從Laravel網站啓動快速入門。 如果我使用代碼中的post函數,它將重定向到localhost/LOCATION 而不是localhost/PROJECT/public/LOCATION。Laravel重定向post到localhost

這可能是在我的配置中的東西,但我不明白它是什麼。

這裏是我的路由器的代碼,它似乎是後任務功能中的問題。

<?php 

use App\Task; 
use Illuminate\Http\Request; 

Route::group(['middleware' => ['web']], function() { 
    /** 
    * Show Task Dashboard 
    */ 
    Route::get('/', function() { 
     return view('tasks', [ 
      'tasks' => Task::orderBy('created_at', 'asc')->get() 
     ]); 
    }); 

    /** 
    * Add New Task 
    */ 
    Route::post('/task', function (Request $request) { 
     $validator = Validator::make($request->all(), [ 
      'name' => 'required|max:255', 
     ]); 

     if ($validator->fails()) { 
      return redirect('/') 
       ->withInput() 
       ->withErrors($validator); 
     } 

     $task = new Task; 
     $task->name = $request->name; 
     $task->save(); 

     return redirect('/'); 
    }); 

    /** 
    * Delete Task 
    */ 
    Route::delete('/task/{id}', function ($id) { 
     Task::findOrFail($id)->delete(); 

     return redirect('/'); 
    }); 
}); 

有了這個代碼,我張貼的路線

<form action="/task" method="POST" class="form-horizontal"> 
    {{ csrf_field() }} 

    <!-- Task Name --> 
    <div class="form-group"> 
     <label for="task-name" class="col-sm-3 control-label">Task</label> 

     <div class="col-sm-6"> 
      <input type="text" name="name" id="task-name" class="form-control" value="{{ old('task') }}"> 
     </div> 
    </div> 

    <!-- Add Task Button --> 
    <div class="form-group"> 
     <div class="col-sm-offset-3 col-sm-6"> 
      <button type="submit" class="btn btn-default"> 
       <i class="fa fa-btn fa-plus"></i>Add Task 
      </button> 
     </div> 
    </div> 
</form> 

UPDATE 如果我改變我的表單動作「/快速啓動/公/任務」它的工作原理,但/任務應該自動重定向到它laravel如果我沒有記錯

+0

你是如何使用post函數的形式?如果是這樣,請張貼 – haakym

+0

表格的代碼是啊從一個形式生病放在那裏thx –

回答

2

你可以使用laravel幫手function.For更https://laravel.com/docs/5.2/helpers#urls

我的建議是爲你使用url()像

<form action = "{{ url('task') }}"> 
+0

是的,我想出了2秒前,但thx !!!!! –

1

你有錯誤的Web服務器配置。您應該將public目錄設置爲根目錄。

localhost/PROJECT/public/LOCATION是一個錯誤的地址,localhost/LOCATION是正確的地址。

例如,如果你使用Apache:

<VirtualHost *:80> 
    ServerName myapp.localhost.com 
    DocumentRoot "/home/vagrant/projects/myapp/public" 
    <Directory "/home/vagrant/projects/myapp/public"> 
    AllowOverride all 
    </Directory> 
</VirtualHost> 
+0

嘿,我再次:)你怎麼知道他使用的是Apache?也許下次使用評論來看看他使用的是什麼技術,然後你可以形成你的答案。 – haakym

+0

@haakym,以及我的答案是統一的,它說什麼是問題以及如何解決問題。我僅以Apache代碼爲例。我可以刪除Apache代碼,我的答案仍然會回答這個問題。爲什麼我已經發布了Apache代碼作爲例子?因爲世界上的大多數服務器都使用Apache作爲Web服務器軟件。 –

+0

我不認爲這是我以前使用Laravel的問題(一年前),我不記得這樣做我認爲這是一個Laravel配置,但我找不到它 –