【问题标题】:Laravel 5: Form fields not in modelLaravel 5:不在模型中的表单字段
【发布时间】:2017-08-11 17:52:23
【问题描述】:

我有一个模型,其中包含一个名为 map_zips 的字段,在该字段内,我想存储最多 5 个邮政编码,以逗号分隔。

我希望有五个不同的表单字段,在将它们存储到数据库模型中之前,我将这些值连接在一起并将它们存储在数据库中的单个列中。

如何在一个视图中创建多个表单域、验证所述表单域、对所述表单域执行需要执行的操作并存储它们?除此之外,我想我还需要在加载编辑/更新页面时将它们分开。

我想最简单的方法是创建 5 个不同的列,每个 zip 一个,但我想学习如何做到这一点,以帮助扩展我对 Laravel 的有限知识。

在我的ReportsController.php 中,我当前的存储方法如下所示:

public function store(Request $request) {
    $this->validate($request, $this->rules);
    $user                     = Auth::user();
    $report                   = $request->all();
    $report['user_id']        = $user->id;
    Report::create($report);
    return redirect('/reports')->with('status', 'Report created');
}

【问题讨论】:

    标签: forms laravel model-view-controller laravel-5


    【解决方案1】:

    我不知道我是否理解你的问题,但你可以试试这个:

    如果您希望视图中有 5 个输入字段,您可以试试这个,您将看到验证错误消息和返回消息以确认该值已正确存储

    @if (count($errors) > 0)
        <div class="alert alert-danger">
            @foreach ($errors->all() as $error)
                <div>{{ $error }}</div>
            @endforeach
        </div>
    @endif
    @if(session()->has('message'))
        <div class="alert alert-success">
            {{ session()->get('message') }}
        </div>
    @endif  
    <form action="{{ route("route_to_store_function") }}" method="post">
        <input type="text" name="zip1">
        <input type="text" name="zip2">
        <input type="text" name="zip3">
        <input type="text" name="zip4">
        <input type="text" name="zip5">
        <button type="submit"></button>
    </form>
    

    然后在您的 store 函数中,连接字段,保存报告并返回上一页的消息:

    public function store(Request $request) {
        $this->validate($request, [
            'zip1' => 'required',// you can add more validations here
            'zip2' => 'required',
            'zip3' => 'required',
            'zip4' => 'required',
            'zip5' => 'required',
        ]);
    
        $report = new Report();
        $report->map_zips = $request->zip1.",".$request->zip2.",".$request->zip3.",".$request->zip4.",".$request->zip5;
        $report->save();
    
        return redirect()->back()->with('message', 'The report has been stored succesfully');
    }
    

    然后当你想编辑报告时,你可以试试这个:

    public function edit($id) {
        $report = Report::find($id)
    
        $zipCodes = explode(",", $report->map_zips);
        return view('edit_report_view', compact("report", "zipCodes"));
    }
    

    在你的编辑视图中:

    <form action="{{ route("route_to_update") }}" method="post">
        <input type="hidden" name="id" value="{{ $report->id }}">
        <input type="text" name="zip1" value="{{ $zipCodes[0] }}">
        <input type="text" name="zip2" value="{{ $zipCodes[1] }}">
        <input type="text" name="zip3" value="{{ $zipCodes[2] }}">
        <input type="text" name="zip4" value="{{ $zipCodes[3] }}">
        <input type="text" name="zip5" value="{{ $zipCodes[4] }}">
        <button type="submit"></button>
    </form>
    

    【讨论】:

      猜你喜欢
      • 2015-11-13
      • 2015-06-07
      • 1970-01-01
      • 2015-07-02
      • 2019-02-24
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多