Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème Laravel, ajout de données de formulaire

ajout de données de formulaire d'objet en relation

    28 juillet 2017 à 7:56:48

    bonjour, j'aimerais insérer les données d'un formulaire d'article mais ce dernier imbrique le formulaire d'image, autrement dit j'aimerais que, lors de la validation du formulaire que l'id de l'image s'insère dans la table article et que les données de l'image s'insère dans la table image. voici mon code 

    Mon PostController::store

        public function store(Request $request){
            
            $formInput = $request->except('image');
            $image = new \App\Models\Image();
            if(Auth::check()){
                $user_id = Auth::user()->id;  
            } 
            //validate
            $this->validate($request, [
                'title' => 'required',
                'content' => 'required',
                'image' => 'image|mimes:png,jpg,jpeg,zip,rar|max:10000'
            ]);
            //upload image
            $image = $request->image_id;
            if($image){
                $imageName = $image->getClientOriginalName();
                $image->move('images', $imageName);
                $formInput['image'] = $imageName;
            }
            
            
            $article = Post::create([
                'title' => $request->title,
                'content' => $request->content,
                'category_id' => $request->category_id,
                'competence_id' => $request->competence_id,
                'user_id' => $user_id,
                'slug' => $this->random(16), 
                'publication' => true,
                'image_id' => $image->id,
            ]);
            
            $image->article()->save($article);
            
            return redirect()->route('post.index');        
        }

    Mon formulaire de création d'article

                {!! Form::open(['route' => 'post.store', 'method' => 'POST', 'files' => true, 'data-parsley-validate'=>'']) !!}
    
                <div class="form-group">
                    {{ Form::label('title', 'title') }}
                    {{ Form::text('title', null, array('class' => 'form-control','required'=>'','minlength'=>'5')) }}
                </div>
    
                <div class="form-group">
                    {{ Form::label('content', 'Contenu') }}
                    {{ Form::text('content', null, array('class' => 'form-control')) }}
                </div>
                
                <div class="form-group hidden">
                    {{ Form::label('content', 'Contenu') }}
                    {{ Form::text('user_id', null, array('type' => 'hidden')) }}
                </div>            
    
                <div class="form-group">
                    {{ Form::label('category_id', 'Categories') }}
                    {{ Form::select('category_id', $categories, null, ['class' => 'form-control','placeholder'=>'Select Category']) }}
                </div>
    
                <div class="form-group">
                    {{ Form::label('competence_id', 'Competence') }}
                    {{ Form::select('competence_id', $competences, null, ['size' => '1','multiple' => 'multiple', 'class' => 'form-control','placeholder'=>'Select Category']) }}
                </div>
                
                
                <div class="form-group">
                    {{ Form::label('image', 'Image') }}
                    {{ Form::file('image',array('class' => 'form-control')) }}
                </div>
    
                 {{ Form::submit('Create', array('class' => 'btn btn-default')) }}
                {!! Form::close() !!}
    
            </div>

    Mon modele Image

    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Image extends Model {
        protected $fillable = [
            'url',
        ];
    
        public function user(){
            return $this->hasOne(User::class); 
        }    
        
        public function article(){
            return $this->hasOne(Post::class);  
        }    
        
        public function product(){
            return $this->hasOne(Product::class);  
        }    
    }

    Mon Model Post

    <?php
    
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Post extends Model {
        protected $fillable = ['title','slug','content','publication', 'counts_comment' ,'category_id', 'user_id', 'image_id'];
    
        public static function boot() {
            parent::boot();
            self::created(function ($post){
                $post->counts_comment = 0;
            });
            self::deleted(function ($post){
                $comments = $post->comments;
                foreach ($comments as $comment){
                    $comment->delete();
                }
            });        
            return true;
        }    
        
        public function user() {
            return $this->belongsTo(User::class);    
        }    
        
        public function comments() {
            return $this->hasMany(Comment::class); 
        }  
        
        public function competences() {
            return $this->belongsToMany(Competence::class, 'post_competence' )->withPivot('niveau'); 
        }    
        
        public function category() {
            return $this->belongsTo(Category::class);   
        }        
        
        public function image(){
            return $this->belongsTo(Image::class); 
        }        



    Merci pour votre aide


    -
    Edité par king-kong 28 juillet 2017 à 13:00:53

    • Partager sur Facebook
    • Partager sur Twitter

    Problème Laravel, ajout de données de formulaire

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown