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);