2017-10-19 34 views
0

这里是路由代码数据不会存储到数据库中的控制器在Laravel 5.4

Route::resource('/catalog', 'CatalogController'); 

CatalogController.php

public function store(Request $request) 
{ 
    $this->validate($request,[ 
     'cat_name'=>'required', 
     'cat_desc'=>'required', 
     'short_name'=>'required|min:0|integer', 
     'category_image'=>'required' 
    ]); 
    $categories=new Category; 

    $title=$request->get('cat_name'); 
    $desc=$request->get('cat_desc'); 
    $short_name=$request->get('short_name'); 
    $categories['cat_name']=$title; 
    $categories['cat_desc']=$desc; 
    $categories['short_name']=$short_name; 

    if($request->file('image')){ 
     $file=$request->file('image'); 
     $imgname=$file->getClientOriginalName(); 
     $file->move('images',$imgname); 
    } 

    $categories['category_image']=$imgname; 
    $categories->save(); 
    return redirect('/catalog'); 

}

是否有在控制器代码的任何问题?获取数据没有问题,我已经通过返回每一行来检查它们。但每次我尝试插入数据时,它都会返回到相同的创建页面。

,这是 create.blade.php的代码

<div class="row"> 
    <div class="col-lg-20"> 
    <h2 style="color: lightslategrey; padding-left: 30px;">Create Category</h2> 

    {!!Form::open(['method'=>'POST', 'action'=>'[email protected]','files'=>true ])!!} 
     {{ csrf_field() }} 

       <div class="form-group row" style="padding-left: 60px; padding-top: 30px; width: 1350px;"> 
        <label for="cat_name" class="col-2 col-form-label">Category Title :</label> 
        <input class="form-control" name ="cat_name" type="text" placeholder="Enter Title" required> 
       </div> 

       <div class="form-group row" style="padding-left: 60px; padding-top: 10px; width: 1350px;"> 
        <label for="cat_desc" class="col-2 col-form-label">Category Description :</label> 
        <textarea class="form-control" name ="cat_desc" rows= "3" type="text" placeholder="Enter Description" required></textarea> 
       </div> 

       <div class="form-group row" style="padding-left: 60px; padding-top: 10px; width: 1350px;"> 
        <label for="short_name" class="col-2 col-form-label">Short Name</label> 
        <input class="form-control" name ="short_name" type="text" placeholder="Enter Short Name" required> 
       </div> 

       <div class="form-group row" style="padding-left: 60px; padding-top: 10px; width: 1350px;"> 
        <label for="image" class="col-2 col-form-label">Upload Image:</label> 
        <input class="form-control" name ="image" type="file" placeholder="Choose a Image" required> 
       </div> 
       <br/> 
       <br/> 
       <div class="form-group "> 
        <div class="col-lg-8 col-lg-offset-5"> 
         <button class = 'btn btn-success' type="submit" style="width: 200px;">Add Category</button> 
        </div> 
       </div> 
     {!! Form::close() !!} 
    </div> 
</div> 

plz帮助我。我不知道是什么问题。相同的代码正在其他控制器中运行。但是这不起作用。数据库连接和模型没有问题。

+1

重定向返回通常表示验证失败,您应该在视图中检查'$ errors'变量。例如,你确定'short_name'是一个整数吗?如果是这样,你为什么不叫它'short_number'? – apokryfos

+0

@apokryfos short_name是一个字符串。它实际上就像一个标签。没有验证错误..因为相同的代码很好地在另一个控制器中运行。 –

+1

''short_name'=>'required | min:0 | integer','您将验证它为整数。如果它不是一个整数,那么它将验证失败。如果验证失败,那么默认的操作是重定向回到带有验证错误的'$ errors'变量和'session() - > old()'用旧输入填充的表单。你没有在你分享的代码中检查这些 – apokryfos

回答

0

看来你正在尝试使用模型作为数组,但它的一个对象,所以箭头符号是正确的路要走。 (https://laravel.com/docs/5.5/eloquent#retrieving-models

public function store(Request $request) 
{ 
    $this->validate($request,[ 
     'cat_name'=>'required', 
     'cat_desc'=>'required', 
     'short_name'=>'required|min:0|integer', 
     'category_image'=>'required' 
    ]); 

    $category = new Category; 
    $category->cat_name = $request->get('cat_name'); 
    $category->cat_desc = $request->get('cat_desc'); 
    $category->short_name = $request->get('short_name'); 


    $file = $request->file('image'); 
    $imageName = $file->getClientOriginalName(); 
    $file->move('images', $imgname); 
    $category->category_image = $imageName; 
    $category->save(); 

    return redirect('/catalog'); 
} 

我已经更新了你,你片断,也简化了那么一点点。您应该更加精确地使用变量命名,例如$类别(在您的代码中)仅代表一个类别。处理图像不一定要在条件语句内完成,如果存在的话,就像您在验证中声明的那样。

+0

雄辩的模型实现了'ArrayAccess'接口,所以'$ categories [“something”] = $ value'应该和'$ categories-> something = $ value'完全相同,因为它们是两个实现别名'setAttribute(“东西”,$值)' – apokryfos

+0

试过。谢谢@Seb TM –

相关问题