2017-04-10 146 views
0

我使用Laravel 5.2並試圖做一個添加和刪除一個數據,我已經輸入,但當我點擊「刪除」按鈕它給了我NotFoundHttpException。Laravel 5.2刪除函數給了我NotFoundHttpException

這裏的例子我刪除功能代碼控制器:

<?php 
namespace App\Http\Controllers\Track; 

use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Redirect; 
//use Illuminate\Support\Facades\Input; 
use Validator; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 
use App\Track as Track; 

class TrackController extends Controller 
{ 
    /*Display track registry*/ 
    public function index() 
    { 
     $data = array('track' => Track::all()); 
     return view('admin.dashboard.tracks.track',$data); 
    } 

    /*Display create track form*/ 
    public function create() 
    { 
     return view('admin.dashboard.tracks.createtrack'); 
    } 

    /*Save data form*/ 
    public function saveTrack(Request $request) 
    { 
     $input = $request->all(); 
     $messages = array(
      'trackCode.required'=>'Track code required.', 
      'trackCode.unique'=>'Track code already exist.', 
      'trackName.required'=>'Track name required.', 
     ); 
     $rule = array(
      'trackCode' => 'required|unique:track', 
      'trackName' => 'required|max:60', 
     ); 

     $validator = Validator::make($input, $rule, $messages); 

     if($validator->fails()) { 
      #Directed to the same page with error message 
      return Redirect::back()->withErrors($validator)->withInput(); 

      #Validate Success 
     } 

     $track = new Track; 
     $track->trackCode = $request['trackCode']; 
     $track->trackName = $request['trackName']; 

     if (! $track->save()) 
      App::abort(500); 

     return Redirect::action('Track\[email protected]')->with('successMessage','Track data "'.$input['trackName'].'" has been inserted.'); 
    } 

    /*Delete data*/ 
    public function delete($id) 
    { 
     echo $id; 
     /*$trackCode = Track::where('trackCode','=',$id)->first(); 

     if($trackCode==null) 
      App::abort(404); 
     $trackCode->delete(); 

     return Redirect::action('track');*/ 
    } 
} 

,這裏是我的刪除選項的代碼部分:

<div class="box-body"> 
      <table class="table table-bordered table-striped"> 
      <thead> 
      <tr> 
       <th style="width: 150px; text-align: center;">Track Code</th> 
       <th>Track Name</th> 
       <th>Action</th> 
      </tr> 
      </thead> 
      <tbody> 
      @foreach($track as $itemTrack) 
      <tr id="track-list" name="track-list"> 
       <td style="text-align: center;">{{ $itemTrack->trackCode }}</td> 
       <td>{{ $itemTrack->trackName }}</td> 
       <td><a href="{{{ action('Track\[email protected]',[$itemTrack->trackCode]) }}}" title="Delete" onclick="return confirm('Are you sure you want to delete this track : {{{$itemTrack->trackCode.' - '.$itemTrack->trackName }}}?')"> 
        <span class="label label-danger"><i class="fa fa-trash"> Delete </i></span> 
        </a>       
       </td> 
      </tr> 
      @endforeach 
      </tbody> 
      </table> 
      <br/> 
      <a href="{{{ action('Track\[email protected]') }}}"><button class="btn btn-success pull-right" type="submit">Add Data</button></a> 
     </div> 
     <!-- /.box-body --> 
     </div> 
     <!-- /.box --> 

每當它出現的數據,我嘗試將其刪除,它進入一個頁面,出現NotFoundHttpException錯誤,而不是顯示數據的$ id。

有人可以幫忙解釋嗎?感謝

-Edited本部

路線:

<?php 

/* 
|-------------------------------------------------------------------------- 
| Application Routes 
|-------------------------------------------------------------------------- 
| 
| Here is where you can register all of the routes for an application. 
| It's a breeze. Simply tell Laravel the URIs it should respond to 
| and give it the controller to call when that URI is requested. 
| 
*/ 

Route::get('/', function() { 
    return view('welcome'); 
}); 

Route::group(['middleware' => 'web'], function() 
{ 
    Route::auth(); 
}); 

//Route as admin 
Route::group(['middleware' => ['web','role:admin']], function() 
{ 
    Route::get('/users/dashboard', '[email protected]'); 

    /*-----------------------------------------------Track Part---------------------------------------------------------*/ 

    /*Track index*/ 
    Route::get('/users/programs/track', array('as'=>'track', 'uses'=>'Track\[email protected]')); 

    /*Create track form*/ 
    Route::get('/users/programs/track/create', array('as'=>'track.create', 'uses'=>'Track\[email protected]')); 

    /*Route to save track*/ 
    Route::post('/users/programs/track/save', array('as'=>'track.save', 'uses'=>'Track\[email protected]')); 

    /*Delete track*/ 
    Route::get('/users/programs/track/{$id}/delete', array('as'=>'track.delete', 'uses'=>'Track\[email protected]')); 

    /*-----------------------------------------------Course Part---------------------------------------------------------*/ 

    //Display course menu 
    Route::get('/users/programs/course', array('as'=>'course', 'uses'=>'Course\[email protected]')); 

    //Delete course data 
    Route::get('/users/programs/course/{$id}/delete', array('as'=>'course.delete', 'uses'=>'Course\[email protected]')); 

    //Create course data 
    Route::post('/users/programs/course/create', array('as'=>'course.create', 'uses'=>'Course\[email protected]')); 

    //Edit course data 
    Route::get('/users/programs/course/{$id}/edit', array('as'=>'course.edit', 'uses'=>'Course\[email protected]')); 

    //Save editted course data 
    Route::put('/users/programs/course/{$id}/saveEdit', array('as'=>'course.saveEdit', 'uses'=>'Course\[email protected]')); 
}); 
+2

你能告訴你的路線? – aynber

回答

0

我認爲這可能是做與您的三重括號。改爲嘗試{{ action('Track\[email protected]') }}

更多信息,請閱讀此link

+0

它仍然是相同的,仍然重定向到NotFoundHttpException。 –

1

我猜你正在使用你的路線DELETE,這不會有a鏈接工作。您需要創建一個表單並欺騙DELETE。你可以找到更多關於做它here

或者,您可以將Route::delete()更改爲Route::get(),但不建議這樣做。

+0

我使用的Route :: get()之一,但TrackController的刪除功能,我有點跳過或不可讀 –

0

試試這個:

{!動作( 'track.delete',[$ itemTrack-> trackCode])!}

+0

現在它說,track.delete沒有定義 –

0

從文檔:

「。如果該方法接受路由參數,可以將它們作爲第二個參數的方法:

$ url = action('UserController @ profile',['id'=> 1]);「

我猜'id'沒有正確定義。試試這個:

行動( '軌道\ TrackController @刪除',[ '身份證'=> $ itemTrack-> trackCode])

0

替換刪除錨標籤與此: -

<a href="{{ url('users/programs/track/'.$itemTrack->trackCode.'/delete') }}" title="Delete" onclick="return confirm('Are you sure you want to delete this track : {{{$itemTrack->trackCode.' - '.$itemTrack->trackName }}}?')"> 

而且更改刪除路線: -

Route::match(['get', 'post'], '/users/programs/track/{id?}/delete', 'Track\@[email protected]'); 

希望它能幫助!