【问题标题】:Best way to edit selected option in laravel在 laravel 中编辑选定选项的最佳方法
【发布时间】:2020-05-27 19:49:39
【问题描述】:

我有一个简单的表单,用户可以在其中选择所需的输入字段,因此 pages.create 选择选项看起来像这样

        <div class="row">
              <label class="col-sm-2 col-form-label">{{ __('Ads Type') }}</label>
              <div class="col-sm-7">
                  <div class="form-group">
                      <select id="inputStatus" class="form-control" name="ad_type">
                          <option selected>Please select ad type </option>
                          <option>InView video Ads</option>
                          <option>InPage video ads</option>
                          <option>Sticky video Ads</option>
                          <option>InPage video ads</option>
                          <option>InApp video ads</option>
                          <option>Ad-Enabled Video Player</option>

                      </select> 
                  </div>
              </div>
          </div>

现在,在用户提交数据后,我将它们显示在 pages.index 中,现在我希望用户能够编辑这些选项

这是我的控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Setting;

class SettingController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $settings = Setting::all();

        return view('pages.settings.index', compact('settings'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $setting = Setting::all();
        return view('pages.settings.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $setting = Setting::create([
            'domain_url' => $request->get('domain_url'),
            'tag_url' => $request->get('tag_url'),
            'ad_type' => $request->get('ad_type'),
            'video_format' => $request->get('video_format'),
        ]);

          //  dd($request);

          $setting->save();
          return redirect("/settings")->with("sucess", "data saved");
    }

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

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $settings = Setting::find($id);

        return view('pages.settings.edit', compact('settings'));

    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $settings = Setting::find($id);
        $settings->domain_url = $request->get('domain_url');
        $settings->tag_url = $request->get('tag_url');
        $settings->ad_type = $request->get('ad_type');
        $settings->video_format = $request->get('video_format');
        $settings->save();

        return redirect("/settings")->with("success", "Data updated");
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $settings = Setting::find($id);

        $settings->delete();

        return redirect("/settings")->with("sucess", "data updated");
    }
}

现在在我的 pages.edit 我有这个

        <div class="row">
                  <label class="col-sm-2 col-form-label">{{ __('Ads Type') }}</label>
                  <div class="col-sm-7">
                      <div class="form-group">
                          <select id="inputStatus" class="form-control" name="ad_type">
                              <option value="{{$settings->domain_url}}"  {{ old('domain_url') == 1 ? 'selected' : '' }}>
                              <option value="{{$settings->tag_url}}"  {{ old('tag_url') == 1 ? 'selected' : '' }}>
                              <option value="{{$settings->ad_type}}" {{ old('ad_type') == 1 ? 'selected' : '' }}>
                              <option value="{{$settings->video_format}}" {{ old('video_format') == 1 ? 'selected' : '' }}>
                          </select> 
                      </div>
                  </div>
              </div>

现在当我点击编辑时,它显示空输入,我的代码做错了什么?

【问题讨论】:

  • 你能添加完整的控制器/刀片代码吗?
  • @FouedMOUSSI 检查更新
  • 你确定$settings 不为空吗?
  • 请考虑更严格,将find改为findOrFail($id)

标签: php html laravel laravel-blade


【解决方案1】:

查看您的控制器代码后,我发现编辑功能存在问题。应该是这样的:

public function edit($id)
{
    $settings = Setting::find($id);

    return view('pages.settings.edit', ['settings' => compact('settings')]);

}

现在,您视图中的选项标签将是

<option value="{{$settings->domain_url}}"  {{ $settings->domain_url != "" ? 'selected' : '' }}>{{$settings->domain_url}}</option>

【讨论】:

  • 我已根据您的控制器代码更新了我的答案。请立即查看
猜你喜欢
  • 2018-06-02
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
  • 1970-01-01
相关资源
最近更新 更多