Laravel 5.4内部错误:无法检索默认值

时间:2017-03-15 17:12:57

标签: php laravel laravel-5 laravel-5.4

我有一个表单,可以将数据提交到数据库。它将数据提交给数据库。但是当Laravel尝试将其重定向到同一控制器中的另一个方法时会产生错误。

which python

enter image description here

这是我使用的控制器。请检查ReflectionException in RouteDependencyResolverTrait.php line 57: Internal error: Failed to retrieve the default value 方法。

public function store(Request $request)

我在两个不同的场合尝试了以下两种方法。但Laravel每次都会出现同样的错误。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Inbox;

class ContactUsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

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

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        // validate the data
        // store the data in the database
        // redirect to another page
        $this->validate($request, [
            'name' => 'required|max:255',
            'email' => 'required',
            'telephone' => 'required',
            'message' => 'required',
        ]);

        $inbox = new Inbox;

        $inbox->name = $request->name;
        $inbox->email = $request->email;
        $inbox->telephone = $request->telephone;
        $inbox->message = $request->message;
        $inbox->isnew = 1;
        $inbox->category = $request->category;

        $inbox->save();

        // redirects to the route
        //return redirect()->route('contactus.show', $inbox->id);

        return redirect()->action(
            'ContactUsController@show', ['id' => 11]
        );

    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        print_r($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)
    {
        //
    }
}

这是路径文件return redirect()->route('contactus.show', $inbox->id); return redirect()->action( 'ContactUsController@show', ['id' => 11] );

web.php

我不知道导致这个问题的原因。任何建议都会有所帮助。

谢谢!

3 个答案:

答案 0 :(得分:8)

您正在将id值传递给重定向中的路由器,但您没有告诉路由器在路由中使用此值。因此,路由器不知道将id值传递给show方法。

将路线更改为:

Route::get('contactus/{id}', 'ContactUsController@show');

然后您的重定向应该有效,并且应该重定向到(使用示例中的ID)/contactus/11

答案 1 :(得分:3)

您没有在路线上定义$id。您可以使用以下命令将其添加到路径:

Route::get('contactus/show/{id}', 'ContactUsController@show');

您可以将其作为get参数传递,并在请求中检索它:

public function show(Request $request)
{
    print_r($request->input('id'));
}

答案 2 :(得分:0)

我遇到了同样的错误,因为还有参数$request而不是Request $request