Laravel路线去错了路线 [英] Laravel routes going to wrong route

查看:47
本文介绍了Laravel路线去错了路线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不明白以下问题.

这是我的路线:

  Route :: get('events',array('as'=>'events','uses'=>'EventController @ index'));;路线:: get('event/{id}',array('as'=>'event','uses'=>'EventController @ view')));路线:: get('event/new_event',array('as'=>'new_event','uses'=>'EventController @ newEvent')));Route :: post('event/create',array('uses'=>'EventController @ create'));路由:: get('event/{id}/edit',array('as'=>'edit_event','uses'=>'EventController @ edit')));;Route :: post('event/update',array('uses'=>'EventController @ update'));;路由:: delete('event/delete',array('uses'=>'EventController @ destroy'));; 

我无法创建新事件,因为当我单击新事件"按钮时,它使用的是 EventController @ view 而不是 EventController @ newEvent .

这是EventController:

 <?php命名空间App \ Http \ Controllers;使用Illuminate \ Support \ Facades \ Input;使用Illuminate \ Http \ Request;使用App \ EventModel;EventController类扩展Controller{公共功能index(){$ events = EventModel :: all();返回\ View :: make('event/index')-> with('events',$ events);}公共功能视图($ id){返回\ View :: make('event/view')-> with('event',EventModel :: find($ id));}公共函数newEvent(){dd("dd");返回\ View :: make('event/create');}公共功能create(){$ validator = EventModel :: validate(Input :: all());if($ validator-> fails()){$ messages = $ validator-> messages();返回redirect()-> action('EventController @ newEvent')-> withErrors($ validator)-> withinput();}别的{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()->覆盖(已创建新事件!",成功");返回redirect()-> back();}}公共功能edit($ id){返回\ View :: make('event/edit')-> with('event',EventModel :: find($ id));}公共功能update(){$ event = EventModel :: find(Input :: get('event_id'));$ validator = EventModel :: validate(Input :: all());if($ validator-> fails()){$ messages = $ validator-> messages();返回redirect()-> back()-> withErrors($ validator)-> withinput();}别的{$ event-> title = Input :: get('title');$ event-> start =输入:: get('start');$ event-> end =输入:: get('end');$ event-> save();//Session :: flash('message','成功更新!');flash()->覆盖(事件已成功更新!",成功");返回redirect()-> back();}}公共函数destroy(){$ id =输入:: get('event_id');dd("$ id");}} 

为什么会出现此问题?

解决方案

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

尝试:

  Route :: get('events',array('as'=>'events','uses'=>'EventController @ index'));;路线:: get('event/new_event',array('as'=>'new_event','uses'=>'EventController @ newEvent')));Route :: post('event/create',array('uses'=>'EventController @ create'));;Route :: post('event/update',array('uses'=>'EventController @ update'));;路由:: delete('event/delete',array('uses'=>'EventController @ destroy'));;路线:: get('event/{id}',array('as'=>'event','uses'=>'EventController @ view')));路由:: get('event/{id}/edit',array('as'=>'edit_event','uses'=>'EventController @ edit')));; 

I do not understand the following problem.

Here are me routes:

Route::get('events', array('as' => 'events' ,'uses' => 'EventController@index'));
Route::get('event/{id}', array('as' => 'event' ,'uses' => 'EventController@view'));
Route::get('event/new_event', array('as'=> 'new_event', 'uses' => 'EventController@newEvent'));
Route::post('event/create', array('uses' => 'EventController@create'));
Route::get('event/{id}/edit', array('as' => 'edit_event', 'uses' => 'EventController@edit'));
Route::post('event/update', array('uses' => 'EventController@update'));
Route::delete('event/delete', array('uses' => 'EventController@destroy'));

I can not create a new event, because when I click on the 'New Event' button, it uses EventController@view instead of EventController@newEvent.

Here is the 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('EventController@newEvent')
            ->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");
    }
}

Why does this problem occur?

解决方案

You have to sort your routes because laravel checks the order of the routes.

Try:

Route::get('events', array('as' => 'events' ,'uses' => 'EventController@index'));
Route::get('event/new_event', array('as'=> 'new_event', 'uses' => 'EventController@newEvent'));
Route::post('event/create', array('uses' => 'EventController@create'));
Route::post('event/update', array('uses' => 'EventController@update'));
Route::delete('event/delete', array('uses' => 'EventController@destroy'));
Route::get('event/{id}', array('as' => 'event' ,'uses' => 'EventController@view'));
Route::get('event/{id}/edit', array('as' => 'edit_event', 'uses' => 'EventController@edit'));

这篇关于Laravel路线去错了路线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆