مشکل در اپدیت کردن در لاراول

- 8 ماه پیش
توسط محمد آپدیت شد
محمد ( 1277 تجربه )
8 ماه پیش

من در سایتم بخشی به اسم تنظیمات دارم فقط باید بروزرسانی بشه ، مثلا مواردی مثل نام سایت ، توضیحات زبان سایت و فعال بودن سایت را کاربر میتونه وارد کنه. اما دارای مشکل هستم
و ارور دارم که در اینجا ارور و کدهای خودمو میفرستم ممنون میشمم کمکم کنید

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'title' cannot be null (SQL: insert into `settings` (`title`, `description`, `keywords`, `lock_site`, `lock_text`, `icon`, `lang`, `admin_mail`, `contact_mail`, `google_accept`, `alexa_accept`, `analytics`, `samandehi`, `updated_at`, `created_at`) values (, , , 0, , , fa, , , , , , , 2018-02-11 13:33:25, 2018-02-11 13:33:25))

کد کنترلر

<?php

namespace App\Http\Controllers\Admin;

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

class SettingController extends Controller
{
    public function index()
    {
        return view('admin.settings.master');
    }

    public function general()
    {
        $setting = Setting::firstOrFail();
        return view('admin.settings.general',compact('setting'));
    }

    public function mail()
    {
        $setting = Setting::firstOrFail();
        return view('admin.settings.mail',compact('setting'));
    }

    public function seo()
    {
        $setting = Setting::firstOrFail();
        return view('admin.settings.seo',compact('setting'));
    }

    public function update(Request $request,Setting $setting)
    {
        $setting->title = $request['title'];
        $setting->description = $request['description'];
        $setting->keywords = $request['keywords'];
        $setting->lock_site = $request->has('lock_site') ? 1 : 0;
        $setting->lock_text = $request['lock_text'];
        $setting->icon = $request['icon'];
        $setting->lang = $request['lang'];
        $setting->admin_mail = $request['admin_email'];
        $setting->contact_mail = $request['contact_email'];
        $setting->google_accept = $request['google_accept'];
        $setting->alexa_accept = $request['alexa_accept'];
        $setting->analytics = $request['analytics'];
        $setting->samandehi = $request['samandehi'];
        $setting->save();

        alert()->success('تنظیمات سایت با موفقیت انجام شد', 'ذخیره شد');
        return redirect(route('admin.settings.master.general'));
    }
}

کد روت پروژه

$this->group(['prefix' => 'settings'] , function(){
        $this->get('/' , 'SettingController@index')->name('settings.master');
        $this->get('/general' , 'SettingController@general')->name('settings.general');
        $this->patch('/update' , 'SettingController@update')->name('settings.update');
        $this->get('/mail' , 'SettingController@mail')->name('settings.mail');
        $this->get('/seo' , 'SettingController@seo')->name('settings.seo');
    });

کد های view

@extends('admin.master')

@section('content')
    <!-- Main content -->
    <section class="content">
        <!-- box -->
        <div class="box">
            <div class="box-body">
                <form action="{{ route('settings.update') }}" method="post" enctype="multipart/form-data" class="form-horizontal">
                    {{ csrf_field() }}
                    {{ method_field('PATCH') }}

                    <ul class="nav nav-tabs" >
                        <li role="presentation" class="{{ Route::currentRouteName() == 'settings.general' ? 'active' : '' }}"><a href="{{ route('settings.general')  }}" class="nav-link">عمومی</a></li>
                        <li role="presentation" class="{{ Route::currentRouteName() == 'settings.mail' ? 'active' : '' }}"><a href="{{ route('settings.mail')  }}" class="nav-link">مدیریت ایمیل</a></li>
                        <li role="presentation" class="{{ Route::currentRouteName() == 'settings.seo' ? 'active' : '' }}"><a href="{{ route('settings.seo')  }}" class="nav-link">تایید و آنالتیکس</a></li>
                    </ul>

                    {{ $slot }}
                </form>
            </div>
        </div>
    </section>
@endsection

کد general.php

@component('admin.settings.master')

    <div class="tab-content">
            <div class="form-horizontal">
                <div class="form-group">
                    <div class="col-md-4 col-xs-12">
                        <label class="control-label">عنوان سایت</label>
                        <input type="text" class="form-control" placeholder="عنوان سایت" value="{{$setting->title}}">
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-6 col-xs-12">
                        <label class="control-label">توضیحات سایت</label>
                        <textarea  cols="4" class="form-control" placeholder="توضیحات">{{$setting->description}}</textarea>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-4 col-xs-12">
                        <label class="control-label">کلمات کلیدی</label>
                        <input type="text" class="form-control" placeholder="کلمات کلیدی" value="{{$setting->keywords}}">
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-4">
                        <div class="checkbox checkbox-primary">
                            <input id="checkbox2" type="checkbox" name="status" @if($setting->lock_site) checked="checked" @endif />
                            <label for="checkbox2">وضعیت فعالیت سایت</label>
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-6 col-xs-12">
                        <label class="control-label">متن زمان غیرفعال بودن</label>
                        <textarea cols="3" class="form-control" placeholder="متن">{{$setting->lock_text}}</textarea>
                    </div>
                </div>
                <div class="form-group">
                    <div class="row">
                        <label class="col-md-2 text-right control-label">آیکن سایت</label>
                        <div class="col-md-9">
                            <input id="ticket-attachment" type="file">
                            <p class="help-block"><em>فایل شما کمتر از ۱۰۰ کلیوبایت باشد با پسوندهای gif و png امکان پذیر است</em></p>
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-2 col-xs-12">
                        <label class="control-label">تغییر زبان</label>
                        <select name="lang" id="lang" class="form-control">
                            <option value="fa">فارسی</option>
                            <option value="en">انگلیسی</option>
                            <option value="ar">عربی</option>
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-4 col-xs-12">
                        <button type="submit" class="btn btn-success btn-sm">ذخیره تنظیمات</button>
                    </div>
                </div>
            </div>
    </div>

@endcomponent
حسام موسوی ( 72834 تجربه )
8 ماه پیش

خوب مشکلتون خیلی واضح شما دارین سعی میکنید همه اطلاعات رو اپدیت کنید و اصلا در request اطلاعاتی وجود نداره و اگر ببینید بصورت null هست و احتیاج به انقدر hard code کردن نداره خیلی ساده تره اگر شما از متد update استفاده کنید.

محمد ( 1277 تجربه )
8 ماه پیش
$setting->update();

متود آپدیت را گذاشتم اوکی شد و هیچ خطایی نداد اما هیچ تغییری در در تغییراتی که انجام دادم در دیتابیس انجام نشد. دوباره همان داده ای را نشان داد که قبلا بود.!؟؟ ممنون میشم پاسخ بدید

برای ارسال پاسخ باید وارد سایت شوید