2017-09-12 1 views
0

Je crée un formulaire avec une relation many-many. J'ai une table de poteaux et une table d'activités. Il y a un lien de plusieurs à plusieurs en utilisant le tableau croisé dynamique. Je crée un formulaire pour ajouter une ou plusieurs activités aux messages. Je reçois un 'ErrorException' - Essayer d'obtenir la propriété de non-objet. Je ne peux pas comprendre pourquoi cela ne fonctionne pas.Essayer d'obtenir la propriété de non-objet - Laravel Formulaire

Je vous serais reconnaissant pour toute aide que vous pouvez m'offrir.

Mon code pertinent est ci-dessous.

//Posts/create.blade.php 

{!!Form::open(['action' => '[email protected]','method' => 'POST', 'class'=>'form-group'])!!} 
    {{Form::bsText('title','',['placeholder' => 'Trip Name'])}} 
    {{Form::bsTextarea('body','',['placeholder' => 'Trip Description'])}} 
    {{Form::bsSubmit('submit')}} 



    {{Form::label('activities', 'Activity:') }} 
    <select class="form-control select2-multi" name="activities" multiple="multiple"> 
    @foreach($activities as $activity) 
    <option value="{{ $activity->id }}">{{ $activity->activity_name}} 
    </option> 
    @endforeach 

    </select> 

{!! Form::close() !!} 

// PostsController

public function create() 
    { 
     $activities = Activity::all(); 
     return view('posts.create')->withActivities($activities); 
     $posts = Post::all(); 

    } 
public function store(Request $request) 
{ 
    // Create a new post using the request data 
    // Save it to the database 
    $this->validate(request(), [ 
     'title' => 'required', 
     'body' => 'required', 

    ]); 
    $post = Post::create([ 
    'title' =>request('title'), 
    'body' =>request('body'), 
    'user_id' => auth()->id(), 
    'activity_id' => id() 
    ]); 



    // And then redirect to somewhere in application 
    return redirect()->route('posts.show', $post->id); 
} 
+0

D'où obtenez-vous cette exception? Sur quelle ligne? –

+0

Que signifie 'id()' dans '' activity_id '=> id() '? – aleksejjj

+0

Merci pour vos commentaires! Que signifie id() dans 'activity_id' => id()? Je réalise maintenant que c'est une erreur. Je reçois l'erreur de la lame au point - montre la ligne 30 dans le create.blade.php. Donc je suppose que c'est une erreur dans la forme ou le contrôleur. Ai-je raison de supposer que j'ai besoin de passer l'ID de la table d'activité (selon la table des utilisateurs) dans: '' ' $ post = Post :: create ([ 'title' => request ('title'), 'Body' => requête ('body'), 'user_id' => auth() -> id(), ]); –

Répondre

0

Cette erreur lancer uniquement lorsque vous avez la variable vide, mais vous pointez dans le fichier de la lame pour rendre/affichage pour le navigateur. Ou si vous récupérez des enregistrements de DB, ajoutez findOrFail dans la requête pour éviter ce genre de problèmes. Je vous remercie.

+1

Il utilise uniquement la méthode 'all()'. Cela ne devrait pas tomber en panne. –

+0

En fait, il fait quelques erreurs selon mon hypothèse. Il a besoin de mettre $ request au lieu de request() et ensuite dans la méthode post create il a mis id() d'où cela vient-il dans le code? –

+0

Je sais qu'une solution avec la variable '$ request' est plus élégante, mais elle ne cause pas le problème. Donc, ce n'est pas une réponse à la question –