Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法更新文件上载表单,laravel表单绑定_Php_Forms_Laravel - Fatal编程技术网

Php 无法更新文件上载表单,laravel表单绑定

Php 无法更新文件上载表单,laravel表单绑定,php,forms,laravel,Php,Forms,Laravel,你好,我必须编辑和更新文件上传的形式。当我编辑其他字段并上传照片时,它工作正常。但如果我编辑其他字段而不上载照片,则会显示错误“对非对象调用成员函数getClientOriginalName()” 我的看法 {{ Form::model($layer, array('method'=>'PATCH', 'route'=>array('edit-layer-patch', $layer->id), 'files'=> true)) }} <div class="f

你好,我必须编辑和更新文件上传的形式。当我编辑其他字段并上传照片时,它工作正常。但如果我编辑其他字段而不上载照片,则会显示错误“对非对象调用成员函数getClientOriginalName()”

我的看法

{{ Form::model($layer, array('method'=>'PATCH', 'route'=>array('edit-layer-patch', $layer->id), 'files'=> true)) }}


<div class="form-group">
    <input type="file" name="image" value="{{ $layer->img_path }}" class="form-control" onchange="readURL(this);" id="image" accept="image/*" />
    {{ HTML::image('uploads/'. $layer->img_path, 'your image', array('id' => 'blah', 'width'=>150, 'height' => 100)) }}
</div>

<div class="form-group">
    <label for="layer_name">Layer Name</label>
    <input type="text" class="form-control"  name="layer_name" value="{{ $layer->layer_name }}" />
</div>

<div class="form-group">    
<label for="select_user">Select User</label>
<select name="select_user" class="form-control">
    <option value="{{ $layer->user->id }}">{{ $layer->user->firstname }}</option>
    @foreach($users as $user)
    <option value="{{ $user->id }}">{{ $user->firstname }}</option>
    @endforeach
</select>
</div>

<div class="form-group">    
<label for="select_style">Select Style</label>
<select name="select_style" class="form-control">
    <option value="{{ $layer->style->id }}">{{ $layer->style->style_name }}</option>
    @foreach($styles as $style)
    <option value="{{ $style->id }}">{{ $style->style_name }}</option>
    @endforeach
</select>
</div>

<div class="form-group">    
<label for="select_category">Select Category</label>
<select name="select_category" class="form-control">
    @if(!empty($layer->category->category_name))
    <option value="{{ $layer->category->id }}">{{ $layer->category->category_name }}</option>
    @foreach($categories as $category)
    <option value="{{ $category->id }}">{{ $category->category_name }}</option>
    @endforeach
    @else
    <option value="">Deleted</option>
    @foreach($categories as $category)
    <option value="{{ $category->id }}">{{ $category->category_name }}</option>
    @endforeach
    @endif

</select>
</div>

<div class="form-group">
    <label for="published">Published</label>
    <input type="number" class="form-control" min="0" max="1"  name="published" value="{{ $layer->published }}" />
</div>

<div class="form-group">
    <label for="default">Default</label>
    <input type="number" class="form-control" min="0" max="1"  name="default" value="{{ $layer->default }}" />
</div>

<div class="form-group">
    <button class="btn btn-primary" type="submit">Update</button>
    <a class="btn btn-danger" href="{{ route('layers') }}">Cancel</a>
</div>

{{ Form::close() }}

请帮助我,谢谢

您需要将所有图像内容移动到
if(Input::has('image'))
语句中。

因为您这样做:

$image = Input::file('image');
$filename = $image->getClientOriginalName();
即使您不上传图像(因此,
$image
null

您需要将所有与图像相关的内容移动到
if(Input::has('image'))
检查中

public function edit($id){

    $destinationPath = 'uploads/';
    $layer = Layer::find($id);
    $validator = Validator::make(Input::all(), Layer::$rules);

    if ($validator->fails()) {
        return Redirect::route('edit-layer')->withErrors($validator)->with('message', 'Ups something happened');
    }else{  

        if(Input::has('image')){
            $image = Input::file('image');

            $filename = $image->getClientOriginalName();

            Input::file('image')->move($destinationPath, $filename);

            // ...
        }else{
            // ...
        }

        return Redirect::route('layers')->with('message','Layer Updated');
    }
}
更新 从评论中

admin/layers/%7Bid%7D/edit
实际上是
admin/layers/{id}/edit

看起来验证失败,它转到
Redirect::route('edit-layer')
,缺少id参数

这样做:

return Redirect::route('edit-layer', array($id))->withErrors($validator)->with('message', 'Ups something happened');

我这样做了,但它仍然显示“Symfony\Component\HttpKernel\Exception\NotFoundHttpException”,这可能是一个新问题。重定向是发生过还是之前显示过错误?当我单击“提交”时,重定向也会发生。它从更新(当我上传照片时)admin/layers/%7Bid%7D/edit添加了不同url的百分比谢谢,我找到了解决方案。错误发生在我验证表单时。我删除了验证,它工作了。它会在上传照片和不上传照片的情况下更新表单。非常感谢你。我只有13个名声,我无法推翻你的回答我修正了错误。验证向我显示了错误,因为我需要输入文件,这就是原因。(脸掌)
return Redirect::route('edit-layer', array($id))->withErrors($validator)->with('message', 'Ups something happened');