Лучший способ отредактировать выбранную опцию в laravel - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть простая форма, в которой у пользователя есть опции для выбора нужного поля ввода, поэтому на страницах. Опция выбора выглядит так:

        <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>

Теперь, когда я нажимаю "Изменить", отображается пустой ввод, что я делаю не так с моим кодом?

1 Ответ

0 голосов
/ 12 февраля 2020

После просмотра кода вашего контроллера я вижу проблему в функции редактирования. Это должно быть так:

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>
...