【问题标题】:For some routes I get "The payload is invalid" in laravel对于某些路线,我在 laravel 中得到“有效载荷无效”
【发布时间】:2019-12-31 19:52:42
【问题描述】:

我在web.php 中有以下路线,前五条路线运行良好,但从contactsaboutroutes` 失败,但出现以下异常:

Illuminate\Contracts\Encryption\DecryptException 负载无效。

Route::get('services', 'PageController@services')->name('services');
Route::get('/service/{id}', 'PageController@showService')->name('service');
Route::get('/blogs', 'PageController@showBlogs')->name('blogs');
Route::get('/{blog}', 'PageController@showPost')->name('post.show');
Route::post('/comment/{blog}/store', 'PageController@storeComment')->name('comment.store');

Route::get('/contacts', 'PageController@contacts')->name('contacts');
Route::post('/contact/store', 'PageController@storeContact')->name('contact.store');
Route::get('/courses', 'PageController@showCourses')->name('courses');
Route::get('/{course}', 'PageController@categoryCourses')->name('course.category');
Route::get('coursesdetail', 'PageController@showCoursesDetail')->name('coursesdetail');
Route::get('resource', 'PageController@showResource')->name('resource');
Route::get('about', 'PageController@showAbout')->name('about');

PageController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Crypt;
use App\About;
use App\Team;
use App\Service;
use App\Post;
use App\Category;
use App\Tag;
use App\Slider;
use App\Contact;
use App\Client;
use App\Comment;
use App\Course;
use App\Coursecategory;

class PageController extends Controller
{

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $about = About::all();
        $teams = Team::all();
        $services = Service::all();
        $posts = Post::orderBy('created_at', 'desc')->take(3)->get();
        $sliders = Slider::all();
        $clients = Client::all();
        return view('index')->with('about', $about)
            ->with('teams', $teams)
            ->with('services', $services)
            ->with('posts', $posts)
            ->with('sliders', $sliders)
            ->with('clients', $clients);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }


    public function services()
    {
        $services = Service::all();
        return view('service')->with('services', $services);
    }


    public function showService($id)
    {
        $id = Crypt::decrypt($id);
        $service = Service::find($id);

        $services = Service::all();
        return view('service')->with('service', $service)->with('services', $services);
    }

    public function showBlogs()
    {
        // $posts = Post::orderBy('created_at', 'desc')->take(5)->get();
        // $recents = Post::orderBy('created_at', 'desc')->take(5)->get();

        $posts = Post::orderBy('created_at', 'desc')->paginate(4);
        $recents = Post::orderBy('created_at', 'desc')->take(4)->get();

        // $posts = Post::all();
        $tags = Tag::all();
        $categories = Category::all();
        return view('blogs')->with('tags', $tags)
            ->with('categories', $categories)
            ->with('posts', $posts)
            ->with('recents', $recents);
    }

    public function showPost(Request $request, $id)
    {
        $id = Crypt::decrypt($id);
        $posts = [Post::find($id)];
        $recents = Post::orderBy('created_at', 'desc')->take(4)->get();
        $tags = Tag::all();
        $categories = Category::all();
        // $next_id = Post::where('id', '>', $id)->min('id');
        // $prev_id = Post::where('id', '<', $id)->max('id');

        // dd($posts);
        return view('post')->with('posts', $posts)
            ->with('recents', $recents)
            ->with('tags', $tags)
            ->with('categories', $categories);
        // ->with('next', Post::find($next_id))
        // ->with('prev', Post::find($prev_id));
    }

    public function storeComment(Request $request, $post)
    {

        request()->validate([
            'name' => 'required',
            'email' => 'required|email',
            'phone' => 'required',
        ]);

        $contact = Comment::create([
            'post_id' => $post,
            'user_id' => Auth::id(),
            'name' => $request->name,
            'email' => $request->email,
            'phone' => $request->phone,
            'comment' => $request->comments,
        ]);

        session()->flash('success', 'Comment successfully submitted');

        return redirect()->back();
    }

    public function contacts()
    {

        return view('contact');
    }

    public function storeContact(Request $request)
    {

        request()->validate([
            'name' => 'required',
            'email' => 'required|email',
            'phone' => 'required',
        ]);

        $contact = Contact::create([

            'name' => $request->name,
            'email' => $request->email,
            'phone' => $request->phone,
            'comment' => $request->comments,
        ]);

        session()->flash('success', 'Contact information successfully submitted');

        return redirect()->route('contact');
    }

    public function showCourses()
    {

        $categories = Coursecategory::all();
        $courses = Course::orderBy('created_at', 'desc')->paginate(4);
        return view('courses')->with('courses', $courses)
            ->with('categories', $categories);

    }

    public function categoryCourses($id)
    {
        $id = Crypt::decrypt($id);
        $course = Coursecategory::where('id', $id)->first()->courses;


        $categories = Coursecategory::all();
        return view('coursewithcategory')->with('course', $course)
            ->with('categories', $categories);
    }

    public function showCoursesDetail()
    {
        return view('coursesdetail');
    }

    public function showResource()
    {
        return view('resource');
    }

    public function showAbout()
    {
        $about = About::all();
        return view('about')->with('about', $about);
    }


}

【问题讨论】:

  • 请您添加您的PageController 代码。
  • 我添加了我的 PageController .php 。
  • 尝试运行php artisan route:list
  • 您需要检查您传递给decrypt($id) 方法的值。 $id 正确吗?
  • 我运行了这个命令,这里所有的路线都完美显示了,但问题仍然没有解决。

标签: php laravel


【解决方案1】:

当您将uri 用作slug 时,这应该是您的路线顺序。

Route::get('/contacts', 'PageController@contacts')->name('contacts');
Route::post('/contact/store', 'PageController@storeContact')->name('contact.store');
Route::get('/courses', 'PageController@showCourses')->name('courses');
Route::get('coursesdetail', 'PageController@showCoursesDetail')->name('coursesdetail');
Route::get('resource', 'PageController@showResource')->name('resource');
Route::get('about', 'PageController@showAbout')->name('about');
Route::get('/{course}', 'PageController@categoryCourses')->name('course.category');

【讨论】:

  • 请您解释一下为什么路线应该按此顺序排列。
  • @Rwd my bad.{course} 应该是最后一条路线,因为如果{course} 介于两者之间,它将给它的下一条路线带来问题。
猜你喜欢
  • 1970-01-01
  • 2020-04-21
  • 2020-10-11
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 2014-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多