toute aide est appréciée:
** la base de données a créé les tables et fonctionne correctement: **
mais le navigateur renvoie une erreur (Essayer d'obtenir la propriété de non-objet (View:)
Le fichier du contrôleur est:
@foreach ( (array)$doc_data as $data ) {{ $data->id }} @endforeach
Le fichier du modèle est:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class DocTracking extends Model { protected $table = 'doctracking'; } ?>
le fichier de vue est:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Http\Controllers\Controller; use App\Models\DocTracking; use App\Models\User; use Exception; use Auth; use PDF; use QrCode; use Carbon; use Validator; use Illuminate\Support\Facades\input; class DocTrackingController extends Controller { public function __construct() { $this->middleware('auth', ['only', 'getDashboard']); } public function index(Request $request,$id=null) { if(!Auth::check()){ return "Please Login"; } if($id != null){ $userid= $id; } else { $user_id= Auth::user()->id; $selluser = User::find($user_id); } $data = DocTracking::all(); $data = array( 'name'=> $request->name, 'start_date' =>Carbon::parse( $request->start_date), 'end_date' =>Carbon::parse( $request->end_date), 'amount' => $request->amount, 'merchant_id'=> $user_id ); /* $doc_data = DocTracking::all(); $doc_data = response()->json($data); $doc_data = json_encode($data); return view('doctracking.doctracking' ,['selluser'=>$selluser, 'doc_data' => $doc_data]); // return view('doctracking.doctracking',compact('doctracking') ); } public function add_doc(Request $request) { $validation = Validator::make($request->all(),[ 'name'=> 'required', 'start_date'=> 'required', 'end_date'=> 'required', 'amount'=> 'required', 'select_file'=> 'required |image |mimes:jpeg,png,jpg,gif,svg |max:2048', ]); $this->validate( $request, [ 'name'=> 'required', 'start_date'=> 'required', 'end_date'=> 'required', 'amount'=> 'required', 'select_file'=> 'required |image |mimes:jpeg,png,jpg,gif,svg |max:2048', ]); if ( $validation->passes()) { $user_id= Auth::user()->id; $image = time().'.'.$request->file('select_file')->getClientOrignalExtension(); $request->file('select_file')->move(public_path('images'), $image); $file=$request->file('select_file'); $uploaded_file_path=''; if($file!=null) { $destinationPath = 'images/docktracking/'; $uploaded=$file->move($destinationPath,$file->getClientOriginalName()); $image= $uploaded->getPathName(); $img_name= $file->getClientOriginalName(); } $data = array( 'name'=> $request->name, 'start_date' =>Carbon::parse( $request->start_date), 'end_date' =>Carbon::parse( $request->end_date), 'amount' => $request->amount, 'merchant_id'=> $user_id, 'image' =>$img_name ); $doc_data= DocTracking::create($data); return response()->json($doc_data); } } } ?>
Je pense que si {{$ data-> id}} récupère les données, tout fonctionnera bien
4 Réponses :
Vous devez ajouter la clé 'id'
à votre tableau de données (bien sûr, renvoyez le tableau sous la forme 'doc_data'
comme vous le faites actuellement):
@foreach($doc_data as $data) {{ $data['id'] }} @endforeach
Accédez-y comme ceci:
$data = array( 'id' => $id 'name' => $request->name, 'start_date' => Carbon::parse( $request->start_date), 'end_date' => Carbon::parse( $request->end_date), 'amount' => $request->amount, 'merchant_id' => $user_id ); return view('doctracking.doctracking', [ 'selluser' => $selluser, 'doc_data' => $data ]);
Assurez-vous que $ id
contient une valeur.
même problème Décalage de chaîne illégal 'id'
voulez-vous dire comme $ data = DocTracking :: all ();
Je ne sais pas, cela dépend de ce que vous voulez montrer. Dans votre question, vous attribuez deux fois des valeurs à $ data.
je ne comprends pas
Vous devez renvoyer une vue dans votre fonction d'index avec le paramètre que vous voulez passer.
@foreach($doc_data as $data) {{ $data->id }} @endforeach
et en vue
$doc_data = DocTracking::all(); return view('doctracking.doctracking',compact('doc_data') );
maintenant les deux fichiers se parlent mais ont toujours cette erreur Variable non définie: doc_data
le nom de la variable doit être le même sur 1: la déclaration de la variable, 2: sur la fonction compacte à l'intérieur de la vue de retour, et 3: dans votre vue, vérifiez que vous avez le même nom à ces 3 endroits
Tout d'abord, assurez-vous que depuis votre Controller, vous renvoyez un objet $ doc_data
car dans votre code actuel, l'instruction return est commentée, donc je ne sais pas ce que c'est.
p> Deuxièmement, dans votre vue, vous avez du code:
@foreach ( (array)$doc_data as $data ) {{ $data['id'] }} @endforeach
En gros, vous tapez vous-même $ doc_data
dans un tableau, puis essayez de accédez-y en tant qu'objet :) bien sûr, vous obtenez une erreur Essayer d'obtenir la propriété d'un non-objet
.
Soit l'utiliser comme objet:
@foreach ( $doc_data as $data ) {{ $data->id }} @endforeach
OU utilisez-le comme tableau:
@foreach ( (array)$doc_data as $data ) {{ $data->id }} @endforeach
Vous ne pouvez pas jouer sur les deux tableaux :)
Vous utilisez la variable $ data
pour récupérer les données DocTracking
,
De plus, vous écrasez $ data
par un tableau qui ne contient pas id
vous pouvez également convertir le résultat en tableau en utilisant la fonction toArray ()
$ data = DocTracking :: get () -> toArray ();
Essayez
$ data ['id']
maintenant cette erreur Décalage de chaîne illégal 'id'
Supprimez ces deux lignes
$ doc_data = response () -> json ($ data); $ doc_data = json_encode ($ données);