Bonjour,
je viens de suivre la formation Laravel 10 , je vous informe que j ai rencontré un probleme au moment de la modification de proprièté, la modification d une proprièté ne se passe pas elle me donne cette erreur
TypeError
PHP 8.2.4
10.31.0
App\Models\Property::attachFiles(): Argument #1 ($files) must be of type array, null given, called in C:\xampp\htdocs\ProjetLaravel\TutoAgence\app\Http\Controllers\Admin\PropertyController.php on line 78
<?php
namespace App\Http\Controllers\Admin;
use App\Models\Option;
use App\Models\Picture;
use App\Models\Property;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use App\Http\Requests\Admin\PropertyFormRequest;
class PropertyController extends Controller
{
public function __construct()
{
$this->authorizeResource(Property::class, 'property');
}
public function index()
{
return view('admin.properties.index', [
'properties' => Property::orderBy('created_at', 'desc')->withTrashed()->paginate(25)
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$property = new Property();
$property->fill([
'surface' => 40,
'rooms' => 3,
'bedrooms' => 1,
'floor' => 0,
'city' => 'Montpellier',
'postal_code' => 34000,
'sold' => false,
]);
return view('admin.properties.form', [
'property' => $property,
'options' => Option::pluck('name', 'id'),
]);
}
/**
* Store a newly created resource in storage.
*/
public function store(PropertyFormRequest $request)
{
$property = Property::create($request->validated());
$property->options()->sync($request->validated('options'));
$property->attachFiles($request->validated('pictures'));
return to_route('admin.property.index')->with('success', 'Le bien a bien été créé');
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Property $property)
{
// $this->authorize('delete', $property);
return view('admin.properties.form', [
'property' => $property,
'options' => Option::pluck('name', 'id'),
]);
}
/**
* Update the specified resource in storage.
*/
public function update(PropertyFormRequest $request, Property $property)
{
$property->update($request->validated());
$property->options()->sync($request->validated('options'));
$property->attachFiles($request->validated('pictures'));
return to_route('admin.property.index')->with('success', 'Le bien a bien été modifié');
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Property $property)
{
Picture::destroy($property->pictures()->pluck('id'));
$property->delete();
return to_route('admin.property.index')->with('success', 'Le bien a bien été supprimé');
}
}
**Ce que je veux**
Merci de m aider de resoudre ce probleme
**Ce que j'obtiens**
Salut. J'ai pas suivi la formation, je vais donc me baser sur le code que tu as fourni.
S ta methode attachFiles
doit récupérer des fichiers de la requête alors tu dois utiliser $request->file('pictures')
à la place de $request->validated('pictures')
.
Merci bcp eliseekn pour votre reponse , je t informe que j ai résolu mon probleme : comme je declare $files type array j ai oublié d'ecrire les crochets [].
je dois utiliser ça $property->attachFiles([$request->file('pictures')]); au lieu de ça $property->attachFiles($request->file('pictures'));
public function store(PropertyFormRequest $request)
{
$property = Property::create($request->validated());
$property->options()->sync($request->validated('options'));
$property->attachFiles([$request->file('pictures')]);
return to_route('admin.property.index')->with('success', 'Le bien a bien été créé');
}
public function update(PropertyFormRequest $request, Property $property)
{
$property->update($request->validated());
$property->options()->sync($request->validated('options'));
$property->attachFiles([$request->file('pictures')]);
return to_route('admin.property.index')->with('success', 'Le bien a bien été modifié');
}
merci bcp pr ta réponse