2017-03-02 7 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]troy')); 
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_eventおよびevent/{id}は両方とも同じルート構造を持っているため、viewアクションになります。

変更オーダー -

Route::get('event/new_event', array('as'=> 'new_event', 'uses' => '[email protected]')); 
Route::get('event/{id}', array('as' => 'event' ,'uses' => '[email protected]')); 
関連する問題