【问题标题】:I need pass two arguments to controller from view in Laravel 5.6我需要从 Laravel 5.6 的视图中将两个参数传递给控制器
【发布时间】:2019-06-19 10:57:10
【问题描述】:

正如标题所说,我需要从刀片向控制器发送两个变量,但是当我这样做时,出现以下错误

Too few arguments to function App\Http\Controllers\ProjectController::show(), 1 passed and exactly 2 expected

我在刀片中的链接:

<a href="{{ route('projects.show', [$project->slug, $project->id]) }}" class="card--project waypoint">

我的方法的控制器显示:

public function show($slug, $id)
{
    $project_id = Project::where('id', $id);

    $reviews = File::all()->where('fileable_id', '==', $project_id);
    $chart = Charts::database($reviews, 'bar', 'highcharts')
              ->title("Detalle de revisiones")
              ->elementLabel("Revisiones")
              ->dimensions(1000, 500)
              ->responsive(true)
              ->template('indigo-material')
              ->groupByDay()
              ->groupBy('responsable');

    $project = Project::where('slug', $slug)->first();
    $comments = Comment::orderBy('id', 'ASC');
    $files = File::orderBy('id', 'ASC');
    return view('projects.show', compact('project', 'comments', 'files', 'chart'));
}

如何从视图向控制器发送两个有效参数?

【问题讨论】:

  • 你的路线是什么
  • Route::get('projects/{id}', 'ProjectController@show')->name('projects.show') ->middleware('permission:projects.show');
  • 你的路线应该是Route::get('projects/{slug}/{id}', 'ProjectController@show')-&gt;name('projects.show')-&gt;middleware('permission:projects.show');

标签: php laravel controller laravel-blade


【解决方案1】:

你的路线应该是这样的

Route::get('projects/{id}/{slug}', 'ProjectController@show')->name('projects.show')
        ->middleware('permission:projects.show');

解释 因为主要是你在你的函数中声明了两个参数,你的函数需要两个参数,但是你只传递了 id 因为你的路由声明只允许你传递 id 希望它对你有用?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多