路线无法正常工作

时间:2016-08-22 07:46:23

标签: laravel-5.2

我有两条路线。第一个不工作和第二个工作。如果我先放入第二条路线,那么它的工作和另一条路线不工作。 这是我的路线:

Route::any('/class',[
'uses'=> 'classroom@getclass',
'as'=>'class',]);

Route::any('/class',[
'uses'=> 'classroom@showclass',
'as'=>'class',]);

这是我的控制器:

public function getclass(Request $request)
    {
        if (Input::has('post_comment'))
        {
            $status=Input::get('post_comment');
            $commentBox=Input::get('comment_text');
            $selectedStatus=Status::find($status);

            $selectedStatus->comments()->create([
            'comment_text'=>$commentBox,
            'user_id'=>Auth::user()->id,
            'status_id'=>$status
            ]);
            Flash::message('Your comments has been posted');
            return redirect(route('class'));
        }
        if(Input::has('status-text'))
        {
            $text=e(Input::get('status-text'));
            $rules = [
            'status_text'=>'required|string',
            ];
            $validator = Validator::make($request->all(), $rules);


            if(Input::hasFile('status_image_upload'))
            {
                $rules['status_image_upload'] = 'image';
                $validator = Validator::make($request->all(), $rules);
                if($validator->fails())
                {
                    $image = $request->file('status_image_upload');
                    $imageName = str_random(8).'_'.$image->getClientOriginalName();
                    $image->move('status_images', $imageName);
                    $userStatus = new Status();
                    $userStatus -> status_text = $text;
                    $userStatus -> image_url = $imageName;
                    $userStatus -> type = 1;
                    $userStatus -> users_id = Auth::user()->id;
                    $userStatus -> save();
                    Flash::success('Your status has been posted');
                    return redirect(route('class'));
                }
            }
            else if ($validator->fails())
            {
                $userStatus = new Status();
                $userStatus -> status_text = $text;
                $userStatus -> video_url = $request['video_url'];
                $userStatus -> type = 2;
                $userStatus -> users_id = Auth::user()->id;
                $userStatus -> save();
                Flash::success('Your status has been posted');
                return redirect(route('classroom'));
            }
    }


return view('class',[
'posts'=>status::orderBy('id','DESC')->get()
]);}

另一个

 public function showclass(Request $request)
    {
        $randomnumber = rand(50001,1000000);

        $classrooms = new Classrooms();
        $classrooms->class_name = $request['class_name'];
        $classrooms->subject_name = $request['subject_name'];
        $classrooms->section = $request['section'];
        $classrooms->class_code = $randomnumber;
        $classrooms -> user_id = Auth::user()->id;
        $classrooms -> save();
        return view('class', array('class' => Auth::user()) );
    }

现在该怎么办?我认为我的两个网址是相同的问题。如果我是对的,那么我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

问题是您使用的是Route::any()

顾名思义,它会接受POST的任何请求(GETPUTPATCHDELETE/class)使用给定控制器函数的URI和进程。

在你的情况下,当你有第一个:

Route::any('/class',[
'uses'=> 'classroom@getclass',
'as'=>'class',]);

/class正在处理getClass的任何请求,包括您提交的表单。

当你把另一个放在第一个时,它可以正常工作,因为那是第一个被使用的。

尝试将Route::any()更改为他们实际获得的请求类型。

例如,像这样:

Route::get('/class',[
'uses'=> 'classroom@getclass',
'as'=>'class',]);

Route::post('/class',[
'uses'=> 'classroom@showclass',
'as'=>'class',]);

**注意:您不能对两个相同的方法类型(例如/class)使用相同的URI(例如GET),因为第一个路径始终首先匹配并被使用。