php - 在 null 上调用成员函数 move()

标签 php laravel

我不知道如何解决这个问题。似乎当我尝试创建我的文章页面时,如果我不选择 img,它会失败并出现 null 错误。任何人都有任何见解?

错误是通过 Debug模式产生的。在 null 上调用成员函数 move()。/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));

完整文件

 <?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');
        }
    } ?>

最佳答案

在尝试移动文件之前,您必须检查是否有文件:

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

关于php - 在 null 上调用成员函数 move(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41268922/

相关文章:

php - 无法突出显示描述php mysql

PHP 在 ubuntu 上不能与 nginx 一起使用?

Laravel 完整日历

php - 我可以在哪里存储数据库中每行更改的数组?

laravel - 用户通过身份验证时如何在 API 响应中包含额外数据

php - MySQL 喜欢和限制

php - Mysql 一个父多个子结果不重复父行

php - 如何在mysql中散列自动增量

php - Laravel-4.1 时间戳()问题

laravel - 在 Laravel 查询范围内查询相关模型