2017-03-02 185 views
0

我不明白以下问题。Laravel路线出错路线

下面是我的路线:

Route::get('events', array('as' => 'events' ,'uses' => '[email protected]')); 
Route::get('event/{id}', array('as' => 'event' ,'uses' => '[email protected]')); 
Route::get('event/new_event', array('as'=> 'new_event', 'uses' => '[email protected]')); 
Route::post('event/create', array('uses' => '[email protected]')); 
Route::get('event/{id}/edit', array('as' => 'edit_event', 'uses' => '[email protected]')); 
Route::post('event/update', array('uses' => '[email protected]')); 
Route::delete('event/delete', array('uses' => '[email protected]')); 

我不能创建一个新的事件,因为当我点击“新建事件”按钮,它采用[email protected],而不是[email protected]

这里是EventController:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Support\Facades\Input; 
use Illuminate\Http\Request; 
use App\EventModel; 

class EventController extends Controller 
{ 
    public function index() 
    { 
     $events = EventModel::all(); 
     return \View::make('event/index')->with('events', $events); 
    } 

    public function view($id) 
    { 
     return \View::make('event/view') 
     ->with('event', EventModel::find($id)); 

    } 

    public function newEvent() 
    { 
     dd("dd"); 
     return \View::make('event/create'); 
    } 

    public function create() 
    { 
     $validator = EventModel::validate(Input::all()); 

     if($validator->fails()) 
     { 
      $messages = $validator->messages(); 

      return redirect()->action('[email protected]') 
      ->withErrors($validator) 
      ->withinput(); 
     } 
     else 
     { 
      EventModel::create(array(
       'title'=>Input::get('title'), 
       'start'=>Input::get('start'), 
       'end'=>Input::get('end'), 
       'userID'=>\Auth::user()->id, 
      )); 

      //Session::flash('message', 'New event has been created!'); 
      flash()->overlay('New event has been created!', 'Success'); 

      return redirect()->back(); 
     } 
    } 

    public function edit($id) 
    { 
     return \View::make('event/edit') 
     ->with('event', EventModel::find($id)); 
    } 

    public function update() 
    { 
     $event = EventModel::find(Input::get('event_id')); 

     $validator = EventModel::validate(Input::all()); 

     if($validator->fails()) 
     { 
      $messages = $validator->messages(); 

      return redirect()->back() 
      ->withErrors($validator) 
      ->withinput(); 
     } 
     else 
     { 
      $event->title = Input::get('title'); 
      $event->start = Input::get('start');   
      $event->end = Input::get('end'); 
      $event->save(); 

      //Session::flash('message', 'Successfully updated!');  
      flash()->overlay('Event has been sucessfully updated!', 'Success'); 

      return redirect()->back(); 
     } 
    } 

    public function destroy() 
    { 
     $id = Input::get('event_id'); 
     dd("$id"); 
    } 
} 

为什么会出现这种问题的发生?

回答

1

您必须对路由进行排序,因为laravel会检查路由的顺序。

尝试:在他们被定义的顺序

Route::get('events', array('as' => 'events' ,'uses' => '[email protected]')); 
Route::get('event/new_event', array('as'=> 'new_event', 'uses' => '[email protected]')); 
Route::post('event/create', array('uses' => '[email protected]')); 
Route::post('event/update', array('uses' => '[email protected]')); 
Route::delete('event/delete', array('uses' => '[email protected]')); 
Route::get('event/{id}', array('as' => 'event' ,'uses' => '[email protected]')); 
Route::get('event/{id}/edit', array('as' => 'edit_event', 'uses' => '[email protected]')); 
+0

现在 '事件/ new_event' 工作正常,但删除不工作。我已经尝试过所有可能的矿石。 – danielori

+0

@danielori在动态之前保留静态路由。应该解决问题。 –

2

Laravel路线检查。

event/new_eventevent/{id}都具有相同的路线结构,所以它会去view的行动。

更改顺序 -

Route::get('event/new_event', array('as'=> 'new_event', 'uses' => '[email protected]')); 
Route::get('event/{id}', array('as' => 'event' ,'uses' => '[email protected]'));