在Controller.php第107行中的Laravel 5.2 BadMethodCallException:方法[save]不存在

时间:2017-01-18 21:56:53

标签: php laravel laravel-5

我无法弄清楚为什么会收到此错误。

Controller:SectionHeaderController

main()

型号:SectionHeader

<?php

namespace SimpleCms\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use Carbon\Carbon;
use App\Http\Requests;
use App\SectionHeader;


class SectionHeaderController extends Controller {

    public function store(Request $request) {
        $header = new SectionHeader();
        $this->validate($request, [
            'title' => 'required',
            'image' => 'required|mimes:jpeg,png|max:1024|dimensions:max_width=300,max_height=100',
            'heading' => 'required',
            'description' => 'required'
        ]);
        $header->title = $request->title;
        $header->heading = $request->description;
        $header->description = $request->description;

        if($request->hasFile('image')) {
            $file = Input::file('image');
            $timestamp = str_replace([' ', ':'], '-', Carbon::now()->toDateTimeString());

            $name = $timestamp. '-' .$file->getClientOriginalName();
            $header->filePath = $name;
            $file->move(public_path().'/images/', $name);
        }
        $header->save();
        return $this->create()->with('success', 'Done!');
    }
}

路线:

<?php

namespace SimpleCms;

use Illuminate\Database\Eloquent\Model;

class SectionHeader extends Model {

    protected $table = 'sectionheader';
    protected $fillable = [
        'title',
        'description',
        'heading',
        'image'
    ];
}

我不知道什么是错的,也不知道如何解决这个问题。 我点击表单提交时会出现此错误,指向此Route::post('/home/store', 'SectionHeaderController@store' ); 任何的想法?

谢谢。

编辑: 我根据建议改变了,我得到了新的错误

  

SectionHeaderController.php第34行中的FatalErrorException:Class   &#39;应用软件\ SectionHeader&#39;找不到

2 个答案:

答案 0 :(得分:1)

你能改变吗?

  

$ header = new SectionHeaderController():

  

$ header = new SectionHeaders();

答案 1 :(得分:0)

你的代码有很多问题...

我建议将来使用artisan命令生成模型和控制器......

在您的模型中,命名空间不是App\SectionHeader,因为您会遇到此异常:get Class 'App\SectionHeader' not found

将您的模型名称空间更改为App\SectionHeader

在控制器中,您可以创建控制器而不是模型:

$header = new SectionHeaderController():

而不是

$header = new SectionHeaders();

最后在商店行动结束时,我不知道你为什么要这样做:

return $this->create()->with('success', 'Done!');

您应该重定向到某个路线并设置Flash消息或使用成功消息呈现视图...