Как исправить отсутствующий аргумент 3 для App \ Http \ Controllers \ FilesController :: uploadAttachments ()

Я разрабатываю инструмент управления проектами в Laravel 5.2. В моем приложении пользователь может создать проект, и у одного проекта есть много задач, а у одной задачи может быть много файлов-вложений. Я использую cloudder для сохранения моих файлов. В настоящее время я назначил файлы моего проекта только соответствующим проектам. Теперь мне нужно отобразить файлы по каждой задаче соответствующих проектов.

FileController

class FilesController extends Controller
{

public function uploadAttachments(Request $request, $id,$taskId) //this is line 20
{
$this->validate($request, [
'file_name'     => 'required|mimes:jpeg,bmp,png,pdf|between:1,7000',
]);

$filename     = $request->file('file_name')->getRealPath();

Cloudder::upload($filename, null);
list($width, $height) = getimagesize($filename);

$fileUrl = Cloudder::show(Cloudder::getPublicId(), ["width" => $width, "height" => $height]);
$this->saveUploads($request, $fileUrl, $id,$taskId);

return redirect()->back()->with('info', 'Your Attachment has been uploaded Successfully');
}

private function saveUploads(Request $request, $fileUrl, $id,$taskId)
{
$file = new File;
$file->file_name  = $request->file('file_name')->getClientOriginalName();
$file->file_url   = $fileUrl;
$file->project_id = $id;
$file->task_id = $taskId;

$file->save();
}

return redirect()->route('projects.show')->with('info', 'File deleted successfully');
}
}

маршруты

Route::post('projects/{projects}/files', [
'uses' => 'FilesController@uploadAttachments',
'as'   => 'projects.files',
'middleware' => ['auth']
]);

и файловая форма это файлы / form.blade.php

 <div class="row" style="border:1px solid #ccc;margin-left:5px;width:100%;padding:15px;">
@foreach($project->files as $file)
<div>
<div><i class="fa fa-check-square-o"></i>
<span>

<a href="{{ $file->file_url }}" target="_blank">{{ $file->file_name }}</a>
</span>
</div>
</div>
<hr/>
@endforeach

<form class="form-vertical" role="form"enctype="multipart/form-data"method="post"action="{{ route('projects.files', ['projectId'=> $project->id, 'taskId'=>$task->id])}}">
<div class="form-group{{ $errors->has('file_name') ? ' has-error' : '' }}">
<input type="file" name="file_name" class="form-control" id="file_name">
@if ($errors->has('file_name'))
<span class="help-block">{{ $errors->first('file_name') }}</span>
@endif
</div>

<div class="form-group">
<button type="submit" class="btn btn-info">Add Files</button>
</div>

Теперь я получил эту ошибку:

ErrorException в строке FilesController.php 20: отсутствует аргумент 3 для App \ Http \ Controllers \ FilesController :: uploadAttachments ()

Как я могу это исправить?

0

Решение

Вы не передаете необходимые параметры в объявлении маршрута.
добавлять projectId а также taskId.

Route::post('projects/{projectId}/files/{taskId}', [
'uses' => 'FilesController@uploadAttachments',
'as'   => 'projects.files',
'middleware' => ['auth']
]);

И упомяните их в методе контроллера правильно.

public function uploadAttachments(Request $request, $projectId, $taskId)
{
//
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]