Как я могу решить эту ошибку "Слишком мало аргументов для функции App \ Http \ Controllers \ CtnController :: show (), 0 пройдено и ровно 1 ожидается" - PullRequest
0 голосов
/ 10 апреля 2020

Я рассмотрел похожие вопросы, но ни одно из решений не помогло мне. У меня есть представление представления, которое выбирает данные из БД, которые я хочу отобразить. Я считаю, что у меня есть правильный код для моей функции показа на моем CtnController, но я продолжаю получать эту досадную ошибку. В данном случае Ctn - это тип формы, которую я пытаюсь создать.

Это мой контроллер.

<?php

namespace App\Http\Controllers;
use App\Ctn;

use Illuminate\Http\Request;
class CtnController extends Controller
{
           /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }
        /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $ctns = Ctn::orderBy('created_at', 'desc')->paginate(5);
        return view('/ctn.index')->with('ctns', $ctns);
    }

    public function create(){
    return view('/ctn.create'); 
    }

    public function store(Request $request){
        $validatedData = $request -> validate([
            'bol' => 'required',
            'carrier' => 'required',
             'address' => 'required',
             'etd' => 'required',
             'eta' => 'required',
             'portload' => 'required',
             'portdischarge' => 'required',

        ]);

        $ctn = new Ctn;
        $ctn->bill_landing = request('bol');
        $ctn->carrier = request('carrier');
        $ctn->address = request('address');
        $ctn->eta = request('eta');
        $ctn->etd = request('etd');
        $ctn->incoterm = request('incoterm');
        $ctn->forwarder = request('forwarder');
        $ctn->ctnref = request('ctnref');
        $ctn->portloading = request('portload');
        $ctn->portdischarge = request('portdischarge');
        $ctn->quantity = request('quantity');
        $ctn->origin_goods = request('origin');
        $ctn->cost_goods = request('cost');
        $ctn->currency = request('currency');
        $ctn->package_type = request('package');

        $ctn->save();
        return redirect('/ctn')->with('success', 'CTN created');
    }

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

        $ctn = Ctn::find($id);
        return view('/ctn.show', compact('ctn'));
    }
}

Ниже приведен мой маршрут показа в Интернете. php file

Route::get('/ctn/show', 'CtnController@show')->name('show');

Форма показа - это просто форма HTML.

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Аргумент $id вашего show метода ожидает неявную привязку от параметров маршрута, но ваши маршруты не знают ни одного параметра id, поэтому он не может быть привязан к вашему методу.

0 голосов
/ 10 апреля 2020

Ваш метод show() содержит значение $id, однако вы не указали значение в своем маршруте. Измените определение маршрута, чтобы оно могло принимать id:

Route::get('/ctn/show/{id}', 'CtnController@show')->name('show');

. Предполагается, что вы используете URL-адрес, например:

http://example.com/ctn/show/1

Для получения дополнительной информации вы можете просмотреть Документация параметров маршрута

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...