首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确设置用户设置餐饮计划的方式?

如何正确设置用户设置餐饮计划的方式?
EN

Stack Overflow用户
提问于 2021-05-04 11:03:16
回答 1查看 40关注 0票数 0

我正在尝试为用户设置一种基本的方式来创建一周的用餐计划。我已经尝试过几种方法,但由于这是我的第一个项目,我严重卡住了自动取款机。

因此,下面我将展示我已经采取的步骤,并解释我的想法。

create_meal_plans_table.php

我喜欢让表格尽可能简单,然而这可能会让我失败。我最初将星期一到星期五的日期显示为单独的字符串,但它很混乱,因此决定将其放在自己的日表中。

然后我添加了一个标题,以便在用户配置文件中,他们可以从下拉菜单中选择特定的餐饮计划,它将显示出来。

剩下的就不言而喻了。

代码语言:javascript
复制
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateMealPlansTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('meal_plans', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('user_id');
            $table->unsignedBigInteger('day_id');
            $table->string('title');
            $table->string('breakfast');
            $table->string('lunch');
            $table->string('dinner');
            $table->string('snack');

            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('meal_plans');
    }
}

create_days_table

我不确定以字符串形式保留天数是否正确。

代码语言:javascript
复制
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateDaysTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('days', function (Blueprint $table) {
            $table->id();
            $table->mediumText('monday'); //medium height text
            $table->mediumText('tuesday'); //medium height text
            $table->mediumText('wednesday'); //medium height text
            $table->mediumText('thursday'); //medium height text
            $table->mediumText('friday'); //medium height text
            $table->mediumText('saturday'); //medium height text
            $table->mediumText('sunday'); //medium height text
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('days');
    }
}

Meal/create.blade.php

而不是解释这一点,我将截图它的外观,并在下面显示它。

代码语言:javascript
复制
@extends('layouts.app')

@section('content')

    <head>

        <style>

            table .button {
                background-color: transparent;
                border: none;
                color: black;
                padding: 16px 32px;
                text-align: center;
                text-decoration: none;
                display: inline-block;
                font-size: 16px;
                margin: 4px 2px;
                /*transition-duration: 0.4s;*/
                cursor: pointer;
            }

            table {
                margin-left: auto;
                margin-right: auto;
            }
            td {
                width: 8rem;
                height: 4rem;
                border: 1px solid #ccc;
                text-align: center;
            }
            th {
                background: lightblue;
                border-color: white;
            }

            body {
                padding: 1rem;
            }

        </style>

    </head>

    <body>


    <div class="container">

        <form action="/mp" enctype="multipart/form-data" method="post">
            @csrf

            <div class="row">
                <div class="col-8 offset-2">

                    <div class="row pb-3">
                        <h1>Add Meal Plan</h1>
                    </div>

                    <div class="row">

                        <table class="table" >

                            <tr>
                                <td><button class="button-1 button">MON</button></td>
                                <td><button class="button-2 button">TUE</button></td>
                                <td><button class="button-3 button">WED</button></td>
                            </tr>

                            <tr>
                                <td><button class="button-4 button">THURS</button></td>
                                <td><button class="button-5 button">FRI</button></td>
                                <td><button class="button-6 button">SAT</button></td>
                            </tr>
                            <tr>
                                <td></td>
                                <td><button class="button-7 button">SUN</button></td>
                                <td></td>
                            </tr>
                        </table>

                    </div>

                    <header>Enter Meals</header>

                    <div class="form-outer">

                        <form action="/mp" enctype="multipart/form-data" method="post">
                            @csrf

                                <div class="field">

                                    <label for="caption" class="col-md-4 col-form-label">Day</label>

                                    <select>

                                        <option> --Select Tags--</option>

                                        <option id="monday"
                                                class="form-control"
                                                name="monday">
                                            Monday</option>

                                        <option id="tuesday"
                                                class="form-control"
                                                name="tuesday">
                                            Tuesday</option>

                                        <option  id="wednesday"
                                                 class="form-control"
                                                 name="wednesday">
                                            Wednesday</option>

                                        <option  id="thursday"
                                                 class="form-control"
                                                 name="thursday">
                                            Thursday</option>

                                        <option  id="friday"
                                                 class="form-control"
                                                 name="friday">
                                            Friday</option>

                                        <option  id="saturday"
                                                 class="form-control"
                                                 name="saturday"
                                        >Saturday</option>

                                        <option  id="sunday"
                                                 class="form-control"
                                                 name="sunday"
                                        >Sunday</option>

                                    </select>

                                    @if ($errors->has('day_id'))
                                        <span class="invalid-feedback" role="alert">
                            <strong>{{ $errors->first('day_id') }}</strong>
                        </span>
                                    @endif

                                </div>

                                <div class="field">

                                    <label for="caption" class="col-md-4 col-form-label">Breakfast</label>

                                    <input id="breakfast"
                                           type="text"
                                           class="form-control{{ $errors->has('breakfast') ? ' is-invalid' : '' }}"
                                           name="breakfast"
                                           value="{{ old('breakfast') }}"
                                           autocomplete="name" autofocus>

                                    @if ($errors->has('breakfast'))
                                        <span class="invalid-feedback" role="alert">
                                            <strong>{{ $errors->first('breakfast') }}</strong>
                                        </span>
                                    @endif

                                </div>

                                <div class="field">

                            <label for="caption" class="col-md-4 col-form-label">Lunch</label>

                            <input id="lunch"
                                   type="text"
                                   class="form-control{{ $errors->has('lunch') ? ' is-invalid' : '' }}"
                                   name="lunch"
                                   value="{{ old('lunch') }}"
                                   autocomplete="name" autofocus>

                            @if ($errors->has('lunch'))
                                <span class="invalid-feedback" role="alert">
                            <strong>{{ $errors->first('lunch') }}</strong>
                        </span>
                            @endif

                                </div>

{{--                                <div class="field">--}}

{{--                            <label for="caption" class="col-md-4 col-form-label">Snack</label>--}}

{{--                            <input id="snack"--}}
{{--                                   type="text"--}}
{{--                                   class="form-control{{ $errors->has('snack') ? ' is-invalid' : '' }}"--}}
{{--                                   name="snack[]"--}}
{{--                                   value="snack3{{ old('snack') }}"--}}
{{--                                   autocomplete="name" autofocus>--}}

{{--                            @if ($errors->has('snack'))--}}
{{--                                <span class="invalid-feedback" role="alert">--}}
{{--                            <strong>{{ $errors->first('snack') }}</strong>--}}
{{--                        </span>--}}
{{--                            @endif--}}

{{--                        </div>--}}

                                <div class="field">

                            <label for="caption" class="col-md-4 col-form-label">Dinner</label>

                            <input id="dinner"
                                   type="text"
                                   class="form-control{{ $errors->has('meal') ? ' is-invalid' : '' }}"
                                   name="dinner"
                                   value="{{ old('dinner') }}"
                                   autocomplete="name" autofocus>

                            @if ($errors->has('dinner'))
                                <span class="invalid-feedback" role="alert">
                            <strong>{{ $errors->first('dinner') }}</strong>
                        </span>
                            @endif

                                </div>

                            <div class="field">

                                <label for="caption" class="col-md-4 col-form-label">Snack</label>

                                <input id="snack"
                                       type="text"
                                       class="form-control{{ $errors->has('snack') ? ' is-invalid' : '' }}"
                                       name="snack"
                                       value="{{ old('snack') }}"
                                       autocomplete="name" autofocus>

                                @if ($errors->has('snack'))
                                    <span class="invalid-feedback" role="alert">
                            <strong>{{ $errors->first('snack') }}</strong>
                        </span>
                                @endif

                            </div>

{{--                                <div class="field">--}}

{{--                                    <label for="caption" class="col-md-4 col-form-label">Snack</label>--}}

{{--                                    <input id="snack"--}}
{{--                                           type="text"--}}
{{--                                           class="form-control{{ $errors->has('snack') ? ' is-invalid' : '' }}"--}}
{{--                                           name="snack[]"--}}
{{--                                           value="snack4{{ old('snack') }}"--}}
{{--                                           autocomplete="name" autofocus>--}}

{{--                            @if ($errors->has('snack'))--}}
{{--                                <span class="invalid-feedback" role="alert">--}}
{{--                            <strong>{{ $errors->first('snack') }}</strong>--}}
{{--                        </span>--}}
{{--                            @endif--}}

{{--                                </div>--}}

                                <div class="row pt-4">
                                    <button class="btn btn-primary">Add New Post</button>
                                </div>

                        </form>

                    </div>

                    </div>

                </div>
        </form>
    </div>

    </body>

@endsection

将更正select day下拉列表。

MealPlanController.php

代码语言:javascript
复制
<?php

namespace App\Http\Controllers;

use App\MealPlan;
use Illuminate\Http\Request;

class MealPlanController extends Controller
{

    public function __construct()
    {
        $this->middleware('auth', ['except' => ['show']]);
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\Response
     */
    public function index()
    {
        $users = auth()->user()->following()->pluck('profiles.user_id');

        $plans = MealPlan::whereIn('user_id', $users)->with('user')->latest()->paginate(5);

        return view('meal.create.index', compact($plans));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\Response
     */
    public function create()
    {
        return view('meal.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Routing\Redirector
     */
    public function store()
    {
        $data = request()->validate([
            'day_id' => 'required',
            'breakfast' => 'required',
            'lunch' => 'required',
            'dinner' => 'required',
            'snack' => 'required',
        ]);

        auth()->user()->plans()->create([
            'day_id' => $data['day_id'],
            'breakfast' => $data['breakfast'],
            'lunch' => $data['lunch'],
            'dinner' => $data['dinner'],
            'snack' => $data['snack'],

        ]);

        return redirect('/profile/' . auth()->user()->id);
    }


    /**
     * Display the specified resource.
     *
     * @param  \App\MealPlan  $mealPlan
     * @return \Illuminate\Http\Response
     */
    public function show(MealPlan $mealPlan)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\MealPlan  $mealPlan
     * @return \Illuminate\Http\Response
     */
    public function edit(MealPlan $mealPlan)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\MealPlan  $mealPlan
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, MealPlan $mealPlan)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\MealPlan  $mealPlan
     * @return \Illuminate\Http\Response
     */
    public function destroy(MealPlan $mealPlan)
    {
        //
    }
}

无论何时尝试发布它,它都只是刷新页面。无论我能得到什么建议,我都将不胜感激。我甚至可以传递我的电子邮件,如果我能得到更多的建议,否则很难在这里解释。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-04 12:25:45

您在这里还有很多需要改进的地方。

像这样改变你的日程表

代码语言:javascript
复制
Schema::create('days', function (Blueprint $table) {
   $table->id();
   $table->string('day');
   $table->timestamps();
});

那么你应该像这样写一个种子程序。

代码语言:javascript
复制
public function run()
{
    $days = [
        ['id' => 1, 'day'  => 'Monday'],
        ['id' => 2, 'day'  => 'Tuesday'],
        ['id' => 3, 'day'  => 'Wednesday'],
        ['id' => 4, 'day'  => 'Thursday'],
        ['id' => 5, 'day'  => 'Friday'],
        ['id' => 6, 'day'  => 'Saturday'],
        ['id' => 7, 'day'  => 'Sunday'],
    ];

    foreach ($days as $key => $day) {
        DB::table('days')->insert($day);
    }
}

这样就可以很容易地在下拉列表中获取日期。

您应该为选择框添加一个名称属性。现在,您有了选项的名称属性。这是错误的。

Snack是一个数组还是一个字符串?这两个你都有。因为你像存储文本一样存储它。它不应该是数组。

最后,应更改存储

代码语言:javascript
复制
public function store(Request $request)
{
    $data = $request()->validate([
        'day_id' => 'required',//Should come from the days table
        'breakfast' => 'required',
        'lunch' => 'required',
        'dinner' => 'required',
        'snack' => 'required',
    ]);

    auth()->user()->plans()->create([
        'day_id' => $request->get('day_id'),
        'breakfast' => $request->get('breakfast'),
        'lunch' => $request->get('lunch'),
        'dinner' => $request->get('dinner'),
        'snack' => $request->get('snack')
    ]);

    return redirect('/profile/' . auth()->user()->id);
}

试试这个,然后让我知道。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67378255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档