2016-12-21 21 views
5

Tôi không thể tìm ra cách giải quyết vấn đề này. Có vẻ như khi tôi cố gắng tạo trang bài viết của mình nếu tôi không chọn img, nó không thành công với lỗi null. Bất cứ ai có bất kỳ cái nhìn sâu sắc?Gọi đến di chuyển chức năng thành viên() trên số

Lỗi được sản xuất thông qua chế độ gỡ lỗi. Gọi hàm di chuyển thành viên() trên null. /home/UNIT3D/app/controllers/Admin/ArticleController.php

$post->image = null; 
    } 

    $v = Validator::make($post->toArray(), $post->rules); 
    if($v->fails()) 
    { 
     // Suppression de l'image car la validation a échoué 
     if(file_exists(Input::file('image')->move(getcwd() . '/files/img/' . $post->image)))  
     { 
      unlink(Input::file('image')->move(getcwd() . '/files/img/' . $post->image)); 

Full file

<?php 

    namespace Admin; 

    use \View; 
    use \Request; 
    use \Input; 
    use \Auth; 
    use \Redirect; 
    use \Validator; 
    use \Session; 

    use \Illuminate\Support\Str; 
    use \Article; 

    class ArticleController extends \BaseController { 

     /** 
     * Affiche la page d'administration des articles 
     * 
     * @access public 
     * @return post.admin_index_post 
     */ 
     public function index() 
     { 
      $posts = Article::orderBy('created_at', 'DESC')->paginate(20); 
      return View::make('Admin.article.index', array('posts' => $posts)); 
     } 

     /** 
     * Ajoute un article 
     * 
     * @access public 
     * @return post.admin_add_post 
     */ 
     public function add() 
     { 
      if(Request::isMethod('post')) 
      { 
       $input = Input::all(); 
       $post = new Article(); 
       $post->title = $input['title']; 
       $post->slug = Str::slug($post->title); 
       $post->content = $input['content']; 
       //$post->user_id = Auth::user()->id; 
       // Verifie qu'une image à était upload 
       if(Input::hasFile('image') && Input::file('image')->getError() == 0) 
       { 
        // Le fichier est bien une image 
        if(in_array(Input::file('image')->getClientOriginalExtension(), array('jpg', 'jpeg', 'bmp', 'png', 'tiff'))) 
        { 
         // Déplace et ajoute le nom à l'objet qui sera sauvegarder 
         $post->image = 'article-' . uniqid() . '.' . Input::file('image')->getClientOriginalExtension(); 
         Input::file('image')->move(getcwd() . '/files/img/', $post->image); 
        } 
        else 
        { 
         // Image null car invalide ou mauvais format 
         $post->image = null; 
        } 
       } 
       else 
       { 
        // Erreur sur l'image donc null 
        $post->image = null; 
       } 

       $v = Validator::make($post->toArray(), $post->rules); 
       if($v->fails()) 
       { 
        // Suppression de l'image car la validation a échoué 
        if(file_exists(Input::file('image')->move(getcwd() . '/files/img/' . $post->image)))  
        { 
         unlink(Input::file('image')->move(getcwd() . '/files/img/' . $post->image)); 
        } 
        Session::put('message', 'An error has occured'); 
       } 
       else 
       { 
        Auth::user()->articles()->save($post); 
        return Redirect::route('admin_article_index')->with('message', 'Your article has been published'); 
       } 
      } 
      return View::make('Admin.article.add'); 
     } 

     /** 
     * Edite l'article voulu 
     * 
     * @access public 
     * @param $slug Slug de l'article à édité 
     * @param $id Id de l'article 
     * @return post.admin_edit_post 
     */ 
     public function edit($slug, $id) 
     { 
      $post = Article::find($id); 
      if(Request::isMethod('post')) 
      { 
       $input = Input::all(); 
       $post->title = $input['title']; 
       $post->slug = Str::slug($post->title); 
       $post->content = $input['content']; 
       //$post->user_id = Auth::user()->id; 

       // Verifie qu'une image à était upload 
       if(Input::hasFile('image') && Input::file('image')->getError() == 0) 
       { 
        // Le fichier est bien une image 
        if(in_array(Input::file('image')->getClientOriginalExtension(), array('jpg', 'jpeg', 'bmp', 'png', 'tiff'))) 
        { 
         // Déplace et ajoute le nom à l'objet qui sera sauvegarder 
         $post->image = 'article-' . uniqid() . '.' . Input::file('image')->getClientOriginalExtension(); 
         Input::file('image')->move(getcwd() . '/files/img/', $post->image); 
        } 
        else 
        { 
         // Image null car invalide ou mauvais format 
         $post->image = null; 
        } 
       } 
       else 
       { 
        // Erreur sur l'image donc null 
        $post->image = null; 
       } 

       $v = Validator::make($post->toArray(), $post->rules); 
       if($v->fails()) 
       { 
        Session::put('message', 'An error has occured'); 
       } 
       else 
       { 
        $post->save(); 
        return Redirect::route('admin_article_index')->with('message', 'Your article has been modified'); 
       } 
      } 
      return View::make('Admin.article.edit', array('post' => $post)); 
     } 

     /** 
     * Supprime l'article désiré 
     * 
     * @access public 
     * @param $slug Slug de l'article 
     * @param $id Id de l'article 
     * @return void 
     */ 
     public function delete($slug, $id) 
     { 
      $post = Article::find($id); 
      $post->delete(); 
      return Redirect::route('admin_article_index')->with('message', 'This article has been deleted'); 
     } 
    } ?> 
+1

bạn nên phá vỡ câu lệnh if..just kiểm tra nếu file_exists trong if và sau đó làm logic bên trong nó và bạn sẽ được miễn phí của con trỏ null –

Trả lời

1

Bạn cần phải kiểm tra xem bạn có một tập tin trước khi cố gắng để di chuyển tập tin đó:

if (Input::file('image')) { 

    if(file_exists(Input::file('image')->move(getcwd() . '/files/img/' . $post- >image)))  
     { 
      unlink(Input::file('image')->move(getcwd() . '/files/img/' . $post- >image)); 
    .... 
} 
+0

cảm ơn bạn. điều này đã giải quyết được vấn đề của tôi –

Các vấn đề liên quan