2015-12-01 39 views
0

我目前通過文檔閱讀和完成本快速入門指南: http://laravel.com/docs/5.1/quickstart#adding-tasksLaravel內的路由?的.htaccess

我使用WAMP,並已安裝在「WWW/laravel/quickstart5/」 這Laravel應用它工作正常通過本地主機/ laravel/quickstart5 /公/ 當我提交「/本地主機/任務」的新任務,我重定向到

這是我的routes.php文件

訪問索引
<?php 


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

/** 
* Display All Tasks 
*/ 
Route::get('/', function() { 
    $tasks = Task::orderBy('created_at', 'asc')->get(); 

    return view('tasks', [ 
     'tasks' => $tasks 
    ]); 
}); 
/** 
* Add A 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('/'); 

    // Create The Task... 
}); 

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

    return redirect('/'); 
}); 

我在/ app /一個名爲Task.php

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Task extends Model 
{ 
    // 
} 

我不明白,這種形式是如何想的工作。 "<form action="/task" method="POST" class="form-horizontal">"

我得到的唯一的事情是,我想我應該改變的.htaccess中的 「/公衆」 -folder

當前的.htaccess

<IfModule mod_rewrite.c> 
<IfModule mod_negotiation.c> 
    Options -MultiViews 
</IfModule> 



RewriteEngine On 

# Redirect Trailing Slashes If Not A Folder... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

# Handle Front Controller... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

+0

請查看http://www.walkswithme.net/laravel-setup-in-linux-machine。設置虛擬主機並編輯您的主機文件。 –

回答

0

/task總是會相對於根。你實際上有很多選項來「修復」這個 - 其中沒有涉及編輯.htaccess文件。

  1. 使用url輔助函數。這將生成絕對URL。在這種情況下,它將是localhost/laravel/quickstart5/public/task

    action="{{ url('task') }}" 
    
  2. 如果你命名的路線,你可以使用route輔助函數,而不是生成絕對URL。

    action="{{ route('task') }}" 
    
  3. 從您最喜愛的CLI運行php artisan serve。然後,您可以從http://localhost:8000訪問您的Laravel項目。

+0

'重定向('/')'是問題的實際根源,而不是表單操作。 –

+0

@Cryode是什麼讓你說呢?他的表單永遠不會被提交,因爲通過在他的URL之前加上斜槓,他的動作URL現在相對於web服務器的根(也就是localhost)。 –

+0

謝謝,'url'幫助函數馬上解決了它! –