kanjiushi

287 经验值

表单上传一些文本和图片,下面是控制器代码,如果有图片上传,可以正常跑通,但测试如果不上传图片,会重定向到首页,说好的报错不知道报到哪里去了。

    public function store(Requests\StoreArticlePostRequest $request)
    {
        $article = new Article($request->except('image'));
        $article->user_id = \Auth::id();

        if ($request->hasFile('image')) {
            $file = $request->file('image');
            $allowed_extensions = ["png", "jpg"];
            if ($file->getClientOriginalExtension() && !in_array($file->getClientOriginalExtension(), $allowed_extensions)) {
                return ['error' => '图片格式只能为png、jpg'];
            }

            $extension = $file -> getClientOriginalExtension();
            $fileName = \Auth::user()->id . '_' . time() . '.' . $extension;
            $destinationPath = 'uploads/' . $article->user_id . '/';
            $file->move($destinationPath, $fileName);
            $article->picture = $fileName;
            $article->save();
        } else {
            echo "必须上传图片";
        }
        return redirect()->action('PostsController@show', ['id' => $article->id]);
    }

illuminate/html 中trans参数表示什么意思?
例如下面代码:

<div  class="form-group {!! $errors->has('picture') ? 'error' : '' !!} ">
            <div class="col-lg-12">
                {!! Form::label('source', trans("admin/article.picture"), array('class' => 'control-label')) !!}
                <input name="picture" type="file" class="uploader" id="image" value="Upload"/>
           </div>
        </div>

谢谢! @sswowo
多看一些示例,返回去让脑神经打通基础知识之间的链接,然后就能打通任督二脉了。

本站的回复帖子那里,把图片直接拖到那个虚线框中,是怎么弄的? @JellyBool

ajax收藏功能,能给个示例代码么?

看了一下极客学院翻译完全的5.1文档,
http://wiki.jikexueyuan.com/project/laravel-5.1/start-2.html
有些问题更清晰了一些,就像挖土又往下削了薄薄的一层。同时有些疑问:

    public function store(Request $request)
    {
        // Validate the request...

        $flight = new Flight;

        $flight->name = $request->name;

        $flight->save();
    }

其中$flight = new Flight;
这个用法好像在楼主的教程中没这么用,能否说一下? @perfectboook @JellyBool

在github上找了一个laravel5的示例,其中有一个包含多种类型表单,就是包含有文本和图片,控制器里面这样写的:

    public function store(ArticleRequest $request)
    {
        $article = new Article($request->except('image'));
        $article -> user_id = Auth::id();
        $picture = "";
        if(Input::hasFile('image'))
        {
            $file = Input::file('image');
            $filename = $file->getClientOriginalName();
            $extension = $file -> getClientOriginalExtension();
            $picture = sha1($filename . time()) . '.' . $extension;
        }
        $article -> picture = $picture;
        $article -> save();

        if(Input::hasFile('image'))
        {
            $destinationPath = public_path() . '/images/article/'.$article->id.'/';
            Input::file('image')->move($destinationPath, $picture);
        }
    }

在第3行,接收除了图片以外的其他表单数据,在第6行,有个判断,如果接收到图片,就按里面的代码处理。
问题:示例中图片可提交也可不提交,现在需求是必须提交图片,不能为空,怎么修改一下代码?

现处于眼高手低的阶段,道理都清楚,但对laravel的语法不是很清楚,经常不知道咋写

直接上路,难免有点跌跌撞撞,谢谢大家。